- JavaSettingsApplication jk_new_structure
authorvranyj1
Mon, 30 Jul 2012 13:45:56 +0000
branchjk_new_structure
changeset 1569 b7525db9bb2b
parent 1568 81d5c274ae88
child 1570 e6b2fd21ba17
- JavaSettingsApplication class definition added: #javaSourcePathHolder #javaSourcePathHolder: changed: #updatePaths #windowSpec
src/tools/JavaSettingsApplication.st
--- a/src/tools/JavaSettingsApplication.st	Mon Jul 30 10:18:10 2012 +0000
+++ b/src/tools/JavaSettingsApplication.st	Mon Jul 30 13:45:56 2012 +0000
@@ -2,14 +2,15 @@
 
 AbstractSettingsApplication subclass:#JavaSettingsApplication
 	instanceVariableNames:'javaReleaseHolder javaReleaseList javaHomeHolder
-		javaReleaseIsCustomHolder javaClassPathHolder'
+		javaReleaseIsCustomHolder javaClassPathHolder
+		javaSourcePathHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Languages-Java-Tools'
 !
 
 ApplicationModel subclass:#PathEditor
-	instanceVariableNames:'pathHolder selectionHolder treeList'
+	instanceVariableNames:'pathHolder selectionHolder treeList treeView'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:JavaSettingsApplication
@@ -23,7 +24,7 @@
 !
 
 HierarchicalItem subclass:#PathElementItem
-	instanceVariableNames:'element'
+	instanceVariableNames:'element x'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:JavaSettingsApplication::PathEditor
@@ -374,37 +375,78 @@
                     )
                     extent: (Point 695 95)
                   )
-                 (FramedBoxSpec
-                    label: 'Classpath'
-                    name: 'ClasspathPanel'
-                    labelPosition: topLeft
-                    translateLabel: true
+                 (VariableVerticalPanelSpec
+                    name: 'VariableVerticalPanel1'
                     component: 
                    (SpecCollection
                       collection: (
-                       (SubCanvasSpec
-                          name: 'SubCanvas1'
-                          layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-                          level: 0
-                          hasHorizontalScrollBar: false
-                          hasVerticalScrollBar: false
-                          majorKey: #'JavaSettingsApplication::PathEditor'
-                          minorKey: windowSpec
-                          subAspectHolders: 
-                         (Array
-                            
-                           (SubChannelInfoSpec
-                              subAspect: pathHolder
-                              aspect: javaClassPathHolder
-                            )
+                       (FramedBoxSpec
+                          label: 'Classpath'
+                          name: 'ClasspathPanel'
+                          labelPosition: topLeft
+                          translateLabel: true
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (SubCanvasSpec
+                                name: 'SubCanvas1'
+                                layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+                                level: 0
+                                hasHorizontalScrollBar: false
+                                hasVerticalScrollBar: false
+                                majorKey: #'JavaSettingsApplication::PathEditor'
+                                minorKey: windowSpec
+                                subAspectHolders: 
+                               (Array
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: pathHolder
+                                    aspect: javaClassPathHolder
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             )
+                           
                           )
-                          createNewApplication: true
-                          createNewBuilder: true
+                        )
+                       (FramedBoxSpec
+                          label: 'Sources'
+                          name: 'SourcePathPanel'
+                          labelPosition: topLeft
+                          translateLabel: true
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (SubCanvasSpec
+                                name: 'SubCanvas2'
+                                layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+                                level: 0
+                                hasHorizontalScrollBar: false
+                                hasVerticalScrollBar: false
+                                majorKey: #'JavaSettingsApplication::PathEditor'
+                                minorKey: windowSpec
+                                subAspectHolders: 
+                               (Array
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: pathHolder
+                                    aspect: javaSourcePathHolder
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             )
+                           
+                          )
                         )
                        )
                      
                     )
                     extent: (Point 695 459)
+                    handles: (Any 0.5 1.0)
                   )
                  )
                
@@ -496,6 +538,23 @@
     ^ javaReleaseList.
 
     "Modified: / 27-07-2012 / 00:13:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+javaSourcePathHolder
+    "return/create the 'javaClassPathHolder' value holder (automatically generated)"
+
+    javaSourcePathHolder isNil ifTrue:[
+        javaSourcePathHolder := ValueHolder new.
+    ].
+    ^ javaSourcePathHolder
+!
+
+javaSourcePathHolder:something
+    "set the 'javaClassPathHolder' value holder (automatically generated)"
+
+    javaSourcePathHolder := something.
+
+    "Created: / 30-07-2012 / 14:42:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaSettingsApplication methodsFor:'change & update'!
@@ -506,8 +565,10 @@
     release := self javaReleaseHolder value.
     release isNil ifTrue:[
         self javaClassPathHolder value: #().
+        self javaSourcePathHolder value: #().
     ] ifFalse:[
-        self javaClassPathHolder value: (Java effectiveClassPathForRelease: release)
+        self javaClassPathHolder value: (Java effectiveClassPathForRelease: release).
+        self javaSourcePathHolder value: (Java effectiveSourceDirectoriesForRelease: release).
     ]
 
     "Created: / 27-07-2012 / 18:34:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -567,113 +628,6 @@
     "Modified: / 27-07-2012 / 17:55:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaSettingsApplication::PathEditor class methodsFor:'interface specs'!
-
-windowSpec
-    "This resource specification was automatically generated
-     by the UIPainter of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the UIPainter may not be able to read the specification."
-
-    "
-     UIPainter new openOnClass:JavaSettingsApplication::PathEditor andSelector:#windowSpec
-     JavaSettingsApplication::PathEditor new openInterface:#windowSpec
-     JavaSettingsApplication::PathEditor open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(FullSpec
-        name: windowSpec
-        window: 
-       (WindowSpec
-          label: 'NewApplication'
-          name: 'NewApplication'
-          bounds: (Rectangle 0 0 300 300)
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (HierarchicalListViewSpec
-              name: 'PathList'
-              layout: (LayoutFrame 0 0 0 0 -82 1 0 1)
-              model: selectionHolder
-              hasHorizontalScrollBar: true
-              hasVerticalScrollBar: true
-              listModel: treeList
-              highlightMode: line
-              useDefaultIcons: false
-            )
-           (VerticalPanelViewSpec
-              name: 'Buttons1'
-              layout: (LayoutFrame -80 1 0 0 0 1 -22 1)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 5
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (ActionButtonSpec
-                    label: 'Add...'
-                    name: 'ButtonAdd'
-                    activeHelpKey: addPathElement
-                    translateLabel: true
-                    model: actionAdd
-                    extent: (Point 80 22)
-                  )
-                 (ActionButtonSpec
-                    label: 'Edit...'
-                    name: 'ButtonEdit'
-                    activeHelpKey: editPathElement
-                    translateLabel: true
-                    model: actionEdit
-                    enableChannel: canEditHolder
-                    extent: (Point 80 22)
-                  )
-                 (ActionButtonSpec
-                    label: 'Move Up'
-                    name: 'ButtonModeUp'
-                    activeHelpKey: modePathElementUp
-                    translateLabel: true
-                    model: actionMoveUp
-                    enableChannel: canMoveUpHolder
-                    extent: (Point 80 22)
-                  )
-                 (ActionButtonSpec
-                    label: 'Move Down'
-                    name: 'ButtonModeDown'
-                    activeHelpKey: modePathElementDown
-                    translateLabel: true
-                    model: actionMoveDown
-                    enableChannel: canMoveDownHolder
-                    extent: (Point 80 22)
-                  )
-                 (LabelSpec
-                    name: 'SpacingLabel'
-                    translateLabel: true
-                    extent: (Point 80 22)
-                  )
-                 (ActionButtonSpec
-                    label: 'Remove'
-                    name: 'ButtonRemove'
-                    activeHelpKey: removePathElement
-                    translateLabel: true
-                    model: actionRemove
-                    enableChannel: canEditHolder
-                    extent: (Point 80 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
-      )
-! !
 
 !JavaSettingsApplication::PathEditor class methodsFor:'plugIn spec'!
 
@@ -868,6 +822,17 @@
     "Created: / 27-07-2012 / 18:16:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
+!JavaSettingsApplication::PathEditor methodsFor:'hooks'!
+
+postBuildTreeView: aView
+
+    treeView := aView.
+    treeView scrolledView delegate: self.
+
+    "Created: / 29-11-2011 / 14:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !JavaSettingsApplication::PathEditor methodsFor:'private-tree'!
 
 buildCategory: origin
@@ -946,6 +911,7 @@
     "Created: / 27-07-2012 / 18:51:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !JavaSettingsApplication::PathEditor::PathElementItem methodsFor:'accessing'!
 
 element
@@ -956,6 +922,28 @@
     element := something.
 !
 
+enabled
+    ^element enabled
+
+    "Created: / 30-07-2012 / 14:26:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+enabled: aBoolean
+    element enabled: aBoolean
+
+    "Created: / 30-07-2012 / 14:26:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+icon
+    ^element enabled ifTrue:[
+         MenuPanel iconIndicationOn
+    ] ifFalse:[
+         MenuPanel iconIndicationOff
+    ].
+
+    "Created: / 30-07-2012 / 14:11:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 label
     | label |
     label := element pathName asText.
@@ -973,6 +961,47 @@
     "Created: / 27-07-2012 / 18:41:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!JavaSettingsApplication::PathEditor::PathElementItem methodsFor:'displaying'!
+
+__displayLabel:aLabel h:lH on:aGC x:newX y:y h:h 
+
+    | l w |
+
+    l := self label.
+    x := newX.
+    [
+        w := l widthOn: aGC.
+        w > (aGC width - x)
+    ] whileTrue:[
+        l := '...' , (l copyFrom: 9).
+    ].
+
+    super displayLabel:l h:h on:aGC x:newX y:y h:h.
+
+    "Created: / 30-07-2012 / 14:18:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+displayLabel:aLabel h:lH on:aGC x:newX y:y h:h 
+    x := newX.
+    super displayLabel:aLabel h:lH on:aGC x:newX y:y h:h.
+
+    "Created: / 30-07-2012 / 14:23:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaSettingsApplication::PathEditor::PathElementItem methodsFor:'testing'!
+
+isPathElementCategoryItem
+    ^false
+
+    "Created: / 30-07-2012 / 14:28:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isPathElementItem
+    ^true
+
+    "Created: / 30-07-2012 / 14:28:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !JavaSettingsApplication class methodsFor:'documentation'!
 
 version_SVN