gvsig-projects-pool / org.gvsig.topology / trunk / org.gvsig.topology / org.gvsig.topology.swing / org.gvsig.topology.swing.impl / src / main / java / org / gvsig / topology / swing / impl / SelectDataSetDialog.java @ 727
History | View | Annotate | Download (4.47 KB)
1 | 688 | jjdelcerro | package org.gvsig.topology.swing.impl; |
---|---|---|---|
2 | |||
3 | import java.awt.Dimension; |
||
4 | 727 | jjdelcerro | import java.awt.event.MouseAdapter; |
5 | import java.awt.event.MouseEvent; |
||
6 | import java.util.ArrayList; |
||
7 | import java.util.List; |
||
8 | import java.util.Objects; |
||
9 | import javax.swing.ImageIcon; |
||
10 | import javax.swing.JLabel; |
||
11 | 724 | jjdelcerro | import javax.swing.JTree; |
12 | 688 | jjdelcerro | import javax.swing.event.TreeSelectionEvent; |
13 | import javax.swing.event.TreeSelectionListener; |
||
14 | 727 | jjdelcerro | import javax.swing.tree.DefaultTreeCellRenderer; |
15 | 688 | jjdelcerro | import javax.swing.tree.TreePath; |
16 | import org.apache.commons.lang3.StringUtils; |
||
17 | import org.gvsig.tools.swing.api.ToolsSwingLocator; |
||
18 | import org.gvsig.tools.swing.api.ToolsSwingManager; |
||
19 | import org.gvsig.tools.swing.api.windowmanager.Dialog; |
||
20 | import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2; |
||
21 | import org.gvsig.topology.lib.api.TopologyDataSet; |
||
22 | import org.gvsig.topology.swing.api.TopologySwingLocator; |
||
23 | import org.gvsig.topology.swing.api.TopologySwingServices; |
||
24 | |||
25 | /**
|
||
26 | *
|
||
27 | * @author jjdelcerro
|
||
28 | */
|
||
29 | public class SelectDataSetDialog extends SelectDataSetDialogView { |
||
30 | |||
31 | private final TopologySwingServices services; |
||
32 | private Dialog dialog = null; |
||
33 | 724 | jjdelcerro | |
34 | 688 | jjdelcerro | SelectDataSetDialog() { |
35 | this.services = TopologySwingLocator.getTopologySwingManager().getDefaultServices();
|
||
36 | this.initComponents();
|
||
37 | } |
||
38 | 724 | jjdelcerro | |
39 | 688 | jjdelcerro | private void initComponents() { |
40 | this.treeDataSets.setModel(this.services.getDataSetTreeModel()); |
||
41 | 724 | jjdelcerro | this.expandAll(this.treeDataSets); |
42 | 688 | jjdelcerro | this.treeDataSets.addTreeSelectionListener(new TreeSelectionListener() { |
43 | @Override
|
||
44 | public void valueChanged(TreeSelectionEvent e) { |
||
45 | performDataSetSelected(); |
||
46 | } |
||
47 | }); |
||
48 | 727 | jjdelcerro | this.treeDataSets.setCellRenderer(new DefaultTreeCellRenderer() { |
49 | @Override
|
||
50 | public java.awt.Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { |
||
51 | JLabel label = (JLabel) super.getTreeCellRendererComponent(tree,value, selected, expanded, leaf, row, hasFocus); |
||
52 | ImageIcon icon = services.getTreeIcon(tree.getModel(),value);
|
||
53 | label.setIcon(icon); |
||
54 | label.setText(Objects.toString(value, ""));
|
||
55 | return label;
|
||
56 | } |
||
57 | }); |
||
58 | this.treeDataSets.addMouseListener(new MouseAdapter() { |
||
59 | @Override
|
||
60 | public void mouseClicked(MouseEvent e) { |
||
61 | if( e.getButton()==MouseEvent.BUTTON1 && e.getClickCount()==2 ) { |
||
62 | setVisible(false);
|
||
63 | } |
||
64 | } |
||
65 | }); |
||
66 | 724 | jjdelcerro | this.setPreferredSize(new Dimension(350, 400)); |
67 | 688 | jjdelcerro | this.translate();
|
68 | } |
||
69 | |||
70 | 724 | jjdelcerro | private void expandAll(JTree tree) { |
71 | int r = 0; |
||
72 | while (r < tree.getRowCount()) {
|
||
73 | tree.expandRow(r); |
||
74 | r++; |
||
75 | } |
||
76 | } |
||
77 | |||
78 | 688 | jjdelcerro | private void translate() { |
79 | ToolsSwingManager tsm = ToolsSwingLocator.getToolsSwingManager(); |
||
80 | 724 | jjdelcerro | tsm.translate(this.lblName);
|
81 | 688 | jjdelcerro | } |
82 | 724 | jjdelcerro | |
83 | 688 | jjdelcerro | public void setDialog(Dialog dialog) { |
84 | this.dialog = dialog;
|
||
85 | } |
||
86 | 724 | jjdelcerro | |
87 | 688 | jjdelcerro | private void setOkButtonEnabled(boolean enabled) { |
88 | 724 | jjdelcerro | if (this.dialog == null) { |
89 | 688 | jjdelcerro | return;
|
90 | } |
||
91 | this.dialog.setButtonEnabled(WindowManager_v2.BUTTONS_OK, enabled);
|
||
92 | } |
||
93 | 724 | jjdelcerro | |
94 | 727 | jjdelcerro | private List<TopologyDataSet> getSelectedDataSets() { |
95 | TreePath[] paths = treeDataSets.getSelectionPaths(); |
||
96 | List<TopologyDataSet> datasets = new ArrayList<>(); |
||
97 | for (TreePath path : paths) { |
||
98 | Object element = path.getLastPathComponent();
|
||
99 | if (element instanceof TopologyDataSet) { |
||
100 | TopologyDataSet dataSet = (TopologyDataSet) element; |
||
101 | datasets.add(dataSet); |
||
102 | } |
||
103 | 688 | jjdelcerro | } |
104 | 727 | jjdelcerro | return datasets;
|
105 | 688 | jjdelcerro | } |
106 | 724 | jjdelcerro | |
107 | 727 | jjdelcerro | public List<TopologyDataSet> getDataSets() { |
108 | List<TopologyDataSet> dataSets = this.getSelectedDataSets(); |
||
109 | if (dataSets == null || dataSets.isEmpty()) { |
||
110 | 688 | jjdelcerro | return null; |
111 | } |
||
112 | 727 | jjdelcerro | if( dataSets.size()==1 ) { |
113 | String name = this.txtName.getText(); |
||
114 | if (!StringUtils.isEmpty(name)) {
|
||
115 | dataSets.get(0).setName(name);
|
||
116 | } |
||
117 | 688 | jjdelcerro | } |
118 | 727 | jjdelcerro | return dataSets;
|
119 | 724 | jjdelcerro | } |
120 | 688 | jjdelcerro | |
121 | public void performDataSetSelected() { |
||
122 | 727 | jjdelcerro | List<TopologyDataSet> dataSets = this.getSelectedDataSets(); |
123 | if (dataSets == null || dataSets.isEmpty()) { |
||
124 | 688 | jjdelcerro | this.txtName.setText(""); |
125 | this.setOkButtonEnabled(false); |
||
126 | } else {
|
||
127 | 727 | jjdelcerro | this.txtName.setText(dataSets.get(0).getName()); |
128 | 688 | jjdelcerro | this.setOkButtonEnabled(true); |
129 | } |
||
130 | } |
||
131 | 724 | jjdelcerro | |
132 | 688 | jjdelcerro | } |