source: subversion/applications/editors/josm/plugins/junctionchecking/src/org/openstreetmap/josm/plugins/JunctionChecker/JunctionCheckDialog.java

Last change on this file was 33778, checked in by donvip, 18 months ago

update to JOSM 12636

File size: 6.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.plugins.JunctionChecker;
3
4import static org.openstreetmap.josm.tools.I18n.marktr;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.GridLayout;
8import java.awt.event.ActionEvent;
9import java.awt.event.KeyEvent;
10import java.util.Arrays;
11
12import javax.swing.AbstractAction;
13import javax.swing.BoxLayout;
14import javax.swing.JCheckBox;
15import javax.swing.JLabel;
16import javax.swing.JPanel;
17import javax.swing.JSpinner;
18import javax.swing.SpinnerNumberModel;
19import javax.swing.border.TitledBorder;
20
21import org.openstreetmap.josm.gui.MainApplication;
22import org.openstreetmap.josm.gui.SideButton;
23import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
24import org.openstreetmap.josm.gui.util.GuiHelper;
25import org.openstreetmap.josm.tools.ImageProvider;
26import org.openstreetmap.josm.tools.Shortcut;
27
28/**
29 * @author  joerg
30 */
31public class JunctionCheckDialog extends ToggleDialog {
32
33    private final JunctionCheckerPlugin plugin;
34    /** Serializable ID */
35    private static final long serialVersionUID = 2952292777351992696L;
36    private final SideButton checkJunctionButton;
37    private final SideButton createDigraphButton;
38    private final SideButton searchJunctionButton;
39    private final JCheckBox digraphsealcb;
40    private final JCheckBox produceRelation;
41    private final JCheckBox sccCB;
42    private final JSpinner nways;
43    private final SpinnerNumberModel smodel;
44    private final JLabel nwayslabel;
45
46    public JunctionCheckDialog(JunctionCheckerPlugin junctionCheckerGuiPlugin) {
47        super(tr("JunctionChecking"), "junctionchecker", tr("Open the junctionchecking window."),
48                Shortcut.registerShortcut("subwindow:junctionchecker", tr("Toggle: {0}", tr("junctions")),
49                        KeyEvent.VK_J, Shortcut.ALT_SHIFT), 150);
50        plugin = junctionCheckerGuiPlugin;
51        //das Digraph Create Panel
52        JPanel digraphPanel = new JPanel(new GridLayout(1, 2));
53        digraphPanel.setBorder(new TitledBorder(tr("Channel-Digraph creation")));
54        digraphsealcb = new JCheckBox(tr("seal Channel Digraph"));
55        digraphsealcb.setSelected(false);
56        //digraphPanel.add(digraphsealcb);
57
58        sccCB = new JCheckBox(tr("calculate strong connected channels"));
59        sccCB.setSelected(true);
60        digraphPanel.add(sccCB);
61
62        //das Panel zum Junctionchecken
63        JPanel jcPanel = new JPanel(new GridLayout(4, 1));
64        jcPanel.setBorder(new TitledBorder(tr("Junctionchecking/junctions searching")));
65
66        //Elemente für Grad-Auswahl der Kreuzung
67        JPanel spinnerpanel = new JPanel(new GridLayout(1, 2));
68        smodel = new SpinnerNumberModel(3, 1, 20, 1);
69        nways = new JSpinner(smodel);
70        nwayslabel = new JLabel(tr("order of junction (n):"));
71        nwayslabel.setEnabled(false);
72        spinnerpanel.add(nwayslabel);
73        spinnerpanel.add(nways);
74
75        //Elemente zur OSM-Relationen-Erzeugung
76        produceRelation = new JCheckBox(tr("produce OSM-Relations: junction"));
77        produceRelation.setToolTipText(tr("if enabled the plugin produces osm-relations from the junction subgraphs"));
78        produceRelation.setSelected(true);
79        produceRelation.setEnabled(false);
80        jcPanel.add(produceRelation);
81        jcPanel.add(spinnerpanel);
82
83        JPanel centerPanel = new JPanel();
84        centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS));
85        centerPanel.add(digraphPanel);
86        centerPanel.add(jcPanel);
87
88        // ButtonPanel
89        createDigraphButton = new SideButton(new AbstractAction() {
90            {
91                putValue(NAME, marktr("Create"));
92                putValue(SHORT_DESCRIPTION, tr("create the channel digraph"));
93                new ImageProvider("dialogs", "digraphcreation").getResource().attachImageIcon(this, true);
94            }
95            @Override
96            public void actionPerformed(ActionEvent e) {
97                MainApplication.worker.submit(new DigraphCreationTask(plugin, digraphsealcb.isSelected(), sccCB.isSelected()));
98                setActivateJunctionCheckOrSearch(true);
99            }
100        });
101        checkJunctionButton = new SideButton(new AbstractAction() {
102            {
103                putValue(NAME, marktr("Check "));
104                putValue(SHORT_DESCRIPTION, tr("check the subset for junction properties"));
105                new ImageProvider("dialogs", "junctioncheck").getResource().attachImageIcon(this, true);
106            }
107            @Override
108            public void actionPerformed(ActionEvent e) {
109                new PrepareJunctionCheckorSearch(plugin, smodel.getNumber().intValue(), produceRelation.isSelected()).prepareJunctionCheck();
110            }
111        });
112        checkJunctionButton.setEnabled(false);
113        searchJunctionButton = new SideButton(new AbstractAction() {
114            {
115                putValue(NAME, marktr("Search "));
116                putValue(SHORT_DESCRIPTION, tr("search for junctions in the channel subset"));
117                new ImageProvider("dialogs", "junctionsearch").getResource().attachImageIcon(this, true);
118            }
119            @Override
120            public void actionPerformed(ActionEvent e) {
121                new PrepareJunctionCheckorSearch(plugin, smodel.getNumber().intValue(), produceRelation.isSelected()).prepareJunctionSearch();
122            }
123        });
124        searchJunctionButton.setEnabled(false);
125
126        createLayout(centerPanel, false, Arrays.asList(new SideButton[] {
127            createDigraphButton, checkJunctionButton, searchJunctionButton
128        }));
129    }
130
131    /**
132     * (de)aktiviert Buttons zum JunctionCheck oder Suche
133     */
134    public void setActivateJunctionCheckOrSearch(boolean activate) {
135        checkJunctionButton.setEnabled(activate);
136        nways.setEnabled(activate);
137        nwayslabel.setEnabled(activate);
138        produceRelation.setEnabled(activate);
139        searchJunctionButton.setEnabled(activate);
140    }
141
142    /**
143     * (de)aktiviert Buttons zur Channel Digraph Erstellung
144     */
145    public void setActivateCreateDigraph(final boolean activate) {
146        GuiHelper.runInEDTAndWait(new Runnable() {
147            @Override
148            public void run() {
149                createDigraphButton.setEnabled(activate);
150                digraphsealcb.setEnabled(activate);
151                sccCB.setEnabled(activate);
152            }
153        });
154    }
155}
Note: See TracBrowser for help on using the repository browser.