SmallSense__ClassPO.st
branchcvs_MAIN
changeset 320 5242593726f0
parent 272 6232908637cf
child 381 57ef482699a6
child 1043 6517660cd9b8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SmallSense__ClassPO.st	Wed Jan 14 08:28:46 2015 +0000
@@ -0,0 +1,218 @@
+"
+stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
+Copyright (C) 2013-2014 Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License. 
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+"
+"{ Package: 'stx:goodies/smallsense' }"
+
+"{ NameSpace: SmallSense }"
+
+PO subclass:#ClassPO
+	instanceVariableNames:'showPrefix klass icon'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core-Interface-PO'
+!
+
+!ClassPO class methodsFor:'documentation'!
+
+copyright
+"
+stx:goodies/smallsense - A productivity plugin for Smalltalk/X IDE
+Copyright (C) 2013-2014 Jan Vrany
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License. 
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+"
+! !
+
+!ClassPO methodsFor:'accessing'!
+
+hint
+    | namespace |
+
+    namespace := nil.
+    showPrefix ifFalse:[
+        namespace := klass isJavaClass
+                        ifTrue:[klass javaPackage]
+                        ifFalse:[ | ns | ns := klass nameSpace. [ ns isNameSpace ] whileFalse:[ ns := ns nameSpace ]. ns name].
+        (namespace notNil and:[namespace ~~ #Smalltalk]) ifTrue:[
+            ^ 'in ', namespace.
+        ].
+    ].
+    ^ nil
+
+    "Created: / 20-05-2014 / 12:21:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 24-07-2014 / 17:31:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+icon
+
+    icon ifNil:[icon := SystemBrowser iconForClass: klass].
+    ^icon
+
+    "Created: / 06-04-2011 / 23:36:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+klass
+    ^ klass
+
+    "Created: / 25-08-2013 / 13:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+klass: aClass
+    ^ klass := aClass
+
+    "Created: / 25-08-2013 / 13:07:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-05-2014 / 10:05:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+label
+    label isNil ifTrue:[
+        showPrefix ifTrue:[
+            label := klass name.
+            (context notNil and:[klass isJavaClass]) ifTrue:[
+                | lang |
+
+                lang := context language.
+                (lang notNil and:[lang isJava]) ifTrue:[
+                    label := klass javaName
+                ] ifFalse:[
+                    (lang notNil and:[lang isSmalltalk]) ifTrue:[
+                       label := 'JAVA ' , (klass  binaryName copyReplaceAll: $/ with: Character space)
+                     ] ifFalse:[ 
+                        label := klass nameWithoutNameSpacePrefix.
+                     ].
+                ]
+            ].
+        ] ifFalse:[
+            label := klass nameWithoutNameSpacePrefix.
+        ].
+    ].
+
+    ^label
+
+    "Created: / 20-05-2014 / 11:29:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-08-2014 / 16:19:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showPrefix
+    ^ showPrefix
+!
+
+showPrefix:aBoolean
+    showPrefix := aBoolean.
+!
+
+stringAlreadyWritten
+    "Answers a string already written in the textview"
+
+    klass isJavaClass ifTrue:[
+        context language isSmalltalk ifTrue:[
+            | rec |
+
+            rec := context node .
+            [ rec isUnaryMessage ] whileTrue:[
+                rec := rec receiver.
+            ].
+            (rec isVariableNode and:['JAVA' startsWith: rec name]) ifTrue:[
+                ^ context codeView contents string copyFrom: rec startPosition to: context node endPosition
+            ].
+        ] ifFalse:[
+        context language isJavaLike ifTrue:[
+             ^ context wordBeforeCursorConsisitingOfCharactersMatching:[:c | c isAlphaNumeric or:['$_.' includes: c] ]
+        ]].
+    ].
+    ^ super stringAlreadyWritten
+
+    "Created: / 20-10-2013 / 02:46:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-08-2014 / 16:23:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+stringToCompleteForLanguage: language
+    ^ (klass isJavaClass and:[language isSmalltalk]) ifTrue:[
+	'JAVA ', (klass binaryName copyReplaceAll: $/ with: Character space)
+    ] ifFalse:[
+	self label
+    ].
+
+    "Created: / 03-10-2013 / 16:42:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-05-2014 / 11:41:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ClassPO methodsFor:'converting'!
+
+asString
+    ^klass isJavaClass ifTrue:[
+	klass javaName
+    ] ifFalse:[
+	klass name
+    ].
+
+    "Created: / 04-04-2012 / 13:00:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 26-08-2013 / 10:27:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ClassPO methodsFor:'initialization'!
+
+initialize
+    "Invoked when a new instance is created."
+
+    "/ please change as required (and remove this comment)
+    "/ showPrefix := nil.
+
+    super initialize.
+    showPrefix := false.
+
+    "Modified: / 20-10-2013 / 02:38:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+initializeWithClass: aClass
+
+    klass := aClass.
+    showPrefix := false.
+
+    "Created: / 20-05-2014 / 09:56:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ClassPO methodsFor:'testing'!
+
+isSmallSenseClassPO
+    ^ true
+! !
+
+!ClassPO class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
+version_SVN
+    ^ '$Id$'
+! !
+