Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
C
CometeSWT
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
Software Control System
Libraries
java
CometeSWT
Commits
a2b3a228
Commit
a2b3a228
authored
Jan 25, 2012
by
Sylvain Mainguy
Browse files
Options
Downloads
Patches
Plain Diff
No commit message
No commit message
parent
92e12b11
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/main/java/fr/soleil/comete/swt/Tree.java
+150
-61
150 additions, 61 deletions
src/main/java/fr/soleil/comete/swt/Tree.java
with
150 additions
and
61 deletions
src/main/java/fr/soleil/comete/swt/Tree.java
+
150
−
61
View file @
a2b3a228
...
@@ -23,9 +23,13 @@ package fr.soleil.comete.swt;
...
@@ -23,9 +23,13 @@ package fr.soleil.comete.swt;
import
java.io.File
;
import
java.io.File
;
import
java.lang.ref.WeakReference
;
import
java.lang.ref.WeakReference
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.List
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.events.SelectionEvent
;
import
org.eclipse.swt.events.SelectionListener
;
import
org.eclipse.swt.graphics.Point
;
import
org.eclipse.swt.graphics.Rectangle
;
import
org.eclipse.swt.graphics.Rectangle
;
import
org.eclipse.swt.layout.FillLayout
;
import
org.eclipse.swt.layout.FillLayout
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Composite
;
...
@@ -33,6 +37,7 @@ import org.eclipse.swt.widgets.Display;
...
@@ -33,6 +37,7 @@ import org.eclipse.swt.widgets.Display;
import
org.eclipse.swt.widgets.Shell
;
import
org.eclipse.swt.widgets.Shell
;
import
org.eclipse.swt.widgets.TreeItem
;
import
org.eclipse.swt.widgets.TreeItem
;
import
fr.soleil.comete.definition.event.TreeNodeSelectionEvent
;
import
fr.soleil.comete.definition.listener.ITreeNodeSelectionListener
;
import
fr.soleil.comete.definition.listener.ITreeNodeSelectionListener
;
import
fr.soleil.comete.definition.widget.ITree
;
import
fr.soleil.comete.definition.widget.ITree
;
import
fr.soleil.comete.definition.widget.util.BasicTreeNode
;
import
fr.soleil.comete.definition.widget.util.BasicTreeNode
;
...
@@ -44,10 +49,10 @@ import fr.soleil.comete.swt.util.TreeNodeTool;
...
@@ -44,10 +49,10 @@ import fr.soleil.comete.swt.util.TreeNodeTool;
*
*
* @author saintin
* @author saintin
*/
*/
public
class
Tree
extends
CometeComposite
<
org
.
eclipse
.
swt
.
widgets
.
Tree
>
implements
ITree
{
public
class
Tree
extends
CometeComposite
<
org
.
eclipse
.
swt
.
widgets
.
Tree
>
implements
ITree
,
SelectionListener
{
protected
static
final
Rectangle
SHELL_BOUNDS
=
new
Rectangle
(
0
,
0
,
800
,
800
);
protected
final
List
<
WeakReference
<
ITreeNodeSelectionListener
>>
selectionListeners
;
protected
final
List
<
WeakReference
<
ITreeNodeSelectionListener
>>
selectionListeners
;
protected
ITreeNode
rootNode
;
protected
ITreeNode
rootNode
;
/**
/**
...
@@ -56,24 +61,13 @@ public class Tree extends CometeComposite<org.eclipse.swt.widgets.Tree> implemen
...
@@ -56,24 +61,13 @@ public class Tree extends CometeComposite<org.eclipse.swt.widgets.Tree> implemen
public
Tree
(
Composite
parent
,
int
style
)
{
public
Tree
(
Composite
parent
,
int
style
)
{
super
(
parent
,
style
);
super
(
parent
,
style
);
selectionListeners
=
new
ArrayList
<
WeakReference
<
ITreeNodeSelectionListener
>>();
selectionListeners
=
new
ArrayList
<
WeakReference
<
ITreeNodeSelectionListener
>>();
setLayout
(
new
FillLayout
());
}
}
@Override
@Override
protected
org
.
eclipse
.
swt
.
widgets
.
Tree
initControl
()
{
protected
org
.
eclipse
.
swt
.
widgets
.
Tree
initControl
()
{
return
new
org
.
eclipse
.
swt
.
widgets
.
Tree
(
this
,
SWT
.
NONE
);
org
.
eclipse
.
swt
.
widgets
.
Tree
tree
=
new
org
.
eclipse
.
swt
.
widgets
.
Tree
(
this
,
SWT
.
MULTI
);
}
tree
.
addSelectionListener
(
this
);
return
tree
;
@Override
public
void
setHorizontalAlignment
(
int
halign
)
{
// TODO Auto-generated method stub
}
@Override
public
int
getHorizontalAlignment
()
{
// TODO Auto-generated method stub
return
0
;
}
}
@Override
@Override
...
@@ -84,72 +78,56 @@ public class Tree extends CometeComposite<org.eclipse.swt.widgets.Tree> implemen
...
@@ -84,72 +78,56 @@ public class Tree extends CometeComposite<org.eclipse.swt.widgets.Tree> implemen
@Override
@Override
public
void
setRootNode
(
ITreeNode
rootNode
)
{
public
void
setRootNode
(
ITreeNode
rootNode
)
{
if
(
getControl
()
!=
null
)
{
if
(
getControl
()
!=
null
)
{
// remove all nodes to keep a single root, as swt allows multiple roots
getControl
().
removeAll
();
TreeNodeTool
.
createRootTreeNode
(
getControl
(),
rootNode
);
TreeNodeTool
.
createRootTreeNode
(
getControl
(),
rootNode
);
this
.
rootNode
=
rootNode
;
this
.
rootNode
=
rootNode
;
//TODO fire
}
}
}
}
@Override
@Override
public
ITreeNode
getNodeAt
(
int
x
,
int
y
)
{
public
ITreeNode
getNodeAt
(
int
x
,
int
y
)
{
return
null
;
TreeItem
item
=
getControl
().
getItem
(
new
Point
(
x
,
y
));
return
TreeNodeTool
.
findTreeNodeForTreeItem
(
item
,
rootNode
);
}
}
@Override
@Override
public
void
selectNodes
(
boolean
keepPreviousSelection
,
ITreeNode
...
nodes
)
{
public
void
selectNodes
(
boolean
keepPreviousSelection
,
ITreeNode
...
nodes
)
{
}
@Override
public
void
deselectNodes
(
ITreeNode
...
nodes
)
{
TreeItem
rootItem
=
getControl
().
getItem
(
0
);
// find new items to select
List
<
TreeItem
>
itemsToSelect
=
new
LinkedList
<
TreeItem
>();
for
(
ITreeNode
node
:
nodes
)
{
TreeItem
item
=
TreeNodeTool
.
findTreeItemFromTreeNode
(
node
,
rootItem
);
if
(
item
!=
null
&&
!
itemsToSelect
.
contains
(
item
))
{
itemsToSelect
.
add
(
item
);
}
}
@Override
public
void
clearSelection
()
{
TreeItem
[]
treeItem
=
getControl
().
getSelection
();
}
}
@Override
// get previously selected items
public
void
removeAllTreeNodeSelectionListeners
()
{
if
(
keepPreviousSelection
)
{
synchronized
(
selectionListeners
)
{
TreeItem
[]
currentSelection
=
getControl
().
getSelection
();
selectionListeners
.
clear
();
for
(
TreeItem
selectedItem
:
currentSelection
)
{
itemsToSelect
.
add
(
selectedItem
);
}
}
}
}
public
static
void
main
(
final
String
[]
args
)
{
getControl
().
setSelection
((
TreeItem
[])
itemsToSelect
.
toArray
());
final
Display
display
=
new
Display
();
final
Shell
shell
=
new
Shell
(
display
);
shell
.
setBounds
(
SHELL_BOUNDS
);
shell
.
setLayout
(
new
FillLayout
(
SWT
.
VERTICAL
));
Tree
tree
=
new
Tree
(
shell
,
SWT
.
NONE
);
ITreeNode
root
=
new
BasicTreeNode
();
root
.
setName
(
"ROOT"
);
File
[]
roots
=
File
.
listRoots
();
System
.
out
.
println
(
"root length "
+
roots
.
length
);
for
(
int
i
=
0
;
i
<
roots
.
length
;
i
++)
{
ITreeNode
child
=
new
BasicTreeNode
();
child
.
setName
(
roots
[
i
].
toString
());
child
.
setData
(
roots
[
i
]);
root
.
addNodes
(
child
);
}
}
tree
.
setRootNode
(
root
);
@Override
public
void
deselectNodes
(
ITreeNode
...
nodes
)
{
shell
.
open
();
while
(!
shell
.
isDisposed
())
{
if
(!
display
.
readAndDispatch
())
{
display
.
sleep
();
}
}
}
display
.
dispose
();
@Override
System
.
exit
(
0
);
public
void
clearSelection
()
{
getControl
().
deselectAll
();
// TODO fireSelectionChanged
}
}
@Override
@Override
...
@@ -222,4 +200,115 @@ public class Tree extends CometeComposite<org.eclipse.swt.widgets.Tree> implemen
...
@@ -222,4 +200,115 @@ public class Tree extends CometeComposite<org.eclipse.swt.widgets.Tree> implemen
}
}
@Override
public
void
removeAllTreeNodeSelectionListeners
()
{
synchronized
(
selectionListeners
)
{
selectionListeners
.
clear
();
}
}
@Override
public
void
widgetDefaultSelected
(
SelectionEvent
e
)
{
// warnSelectionListeners(new EventObject(this));
}
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
// warnSelectionListeners(new EventObject(this));
}
// if (e != null) {
// TreePath[] paths = e.getPaths();
// if (paths != null) {
// List<TreePath> added = new ArrayList<TreePath>();
// List<TreePath> removed = new ArrayList<TreePath>();
// for (int i = 0; i < paths.length; i++) {
// if (e.isAddedPath(i)) {
// added.add(paths[i]);
// }
// else {
// removed.add(paths[i]);
// }
// }
// List<ITreeNode> nodes = extractNodes(removed);
// if (!nodes.isEmpty()) {
// warnSelectionListeners(new TreeNodeSelectionEvent(this, false,
// nodes.toArray(new ITreeNode[nodes.size()])));
// nodes.clear();
// }
// nodes = extractNodes(added);
// if (!nodes.isEmpty()) {
// warnSelectionListeners(new TreeNodeSelectionEvent(this, true,
// nodes.toArray(new ITreeNode[nodes.size()])));
// nodes.clear();
// }
// }
// }
protected
void
warnSelectionListeners
(
TreeNodeSelectionEvent
event
)
{
if
(
event
!=
null
)
{
synchronized
(
selectionListeners
)
{
List
<
WeakReference
<
ITreeNodeSelectionListener
>>
toRemove
=
new
ArrayList
<
WeakReference
<
ITreeNodeSelectionListener
>>();
for
(
WeakReference
<
ITreeNodeSelectionListener
>
ref
:
selectionListeners
)
{
ITreeNodeSelectionListener
selectionListener
=
ref
.
get
();
if
(
selectionListener
==
null
)
{
toRemove
.
add
(
ref
);
}
else
{
selectionListener
.
selectionChanged
(
event
);
}
}
selectionListeners
.
removeAll
(
toRemove
);
toRemove
.
clear
();
}
}
}
@Override
public
void
setHorizontalAlignment
(
int
halign
)
{
// TODO Auto-generated method stub
}
@Override
public
int
getHorizontalAlignment
()
{
// TODO Auto-generated method stub
return
0
;
}
public
static
void
main
(
final
String
[]
args
)
{
final
Display
display
=
new
Display
();
final
Shell
shell
=
new
Shell
(
display
);
shell
.
setBounds
(
new
Rectangle
(
0
,
0
,
800
,
800
));
shell
.
setLayout
(
new
FillLayout
(
SWT
.
VERTICAL
));
Tree
tree
=
new
Tree
(
shell
,
SWT
.
NONE
);
ITreeNode
root
=
new
BasicTreeNode
();
root
.
setName
(
"ROOT"
);
File
[]
roots
=
File
.
listRoots
();
System
.
out
.
println
(
"root length "
+
roots
.
length
);
for
(
int
i
=
0
;
i
<
roots
.
length
;
i
++)
{
ITreeNode
child
=
new
BasicTreeNode
();
child
.
setName
(
roots
[
i
].
toString
());
child
.
setData
(
roots
[
i
]);
root
.
addNodes
(
child
);
}
tree
.
setRootNode
(
root
);
shell
.
open
();
while
(!
shell
.
isDisposed
())
{
if
(!
display
.
readAndDispatch
())
{
display
.
sleep
();
}
}
display
.
dispose
();
System
.
exit
(
0
);
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment