Statistics
| Revision:

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 @ 2067

History | View | Annotate | Download (4.49 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 728 jjdelcerro
//        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
}