package viewer.hoese; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; import java.util.Properties; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.WindowConstants; import javax.swing.BoxLayout; import java.util.Vector; public class OSMDialog extends JDialog { /** UID for serialization */ private static final long serialVersionUID = 8201724968404205556L; public OSMDialog(JFrame parent) { super(parent, true); // create a modal dialog accepted = true; licenseDialog = new LicenseDialog(null); // create components for server settings selectionCB = new JComboBox(); protocolTF = new JTextField(8); serverTF = new JTextField(24); portTF = new JTextField(3); directoryTF = new JTextField(30); prefixTF = new JTextField(10); minZoomLevelTF = new JTextField(3); maxZoomLevelTF = new JTextField(3); maxDownloadsTF = new JTextField(3); tileSizeXTF = new JTextField(4); tileSizeYTF = new JTextField(4); nameTF = new JTextField(12); licenseUrlTF = new JTextField(12); warningTF = new JTextField(24); mapperClassTF = new JTextField(24); showFrames = new JCheckBox("Show tile frames"); fixedZoom = new JCheckBox("Use fixed zoom levels"); fixedZoom.setSelected(true); showNames = new JCheckBox("Show tile names"); showCompleteMap = new JCheckBox("Show complete map"); backgroundColor = new JLabel(" "); backgroundColor.setOpaque(true); setBgColorBtn = new JButton("Set background color"); foregroundColor = new JLabel(" "); foregroundColor.setBackground(Color.RED); foregroundColor.setOpaque(true); setFgColorBtn = new JButton("Set frame/name color"); showLicenseBtn = new JButton("Show License"); acceptBtn = new JButton("accept"); resetBtn = new JButton("reset"); cancelBtn = new JButton("cancel"); layoutComponents(getContentPane()); setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); // don't // allow // closing // by // pressing // "X" addKnownServers(); selectionCB.setSelectedIndex(0); origSettings = new Properties(); storeSettingsToProperties(origSettings); addBtnListener(); } /** puts all the contained components at their places. **/ private void layoutComponents(Container root) { JPanel content = new JPanel(); content.setLayout(new BoxLayout(content,BoxLayout.Y_AXIS)); JScrollPane sp = new JScrollPane(content); root.add(sp); // north ( preset type and name ) JPanel categoryPanel = new JPanel(); categoryPanel.setLayout(new BoxLayout(categoryPanel,BoxLayout.X_AXIS)); categoryPanel.add(new JLabel("Choose preset type:")); categoryPanel.add(selectionCB); JPanel namePanel = new JPanel(); namePanel.add(new JLabel("Name:")); namePanel.add(nameTF); categoryPanel.add(namePanel); content.add(categoryPanel); // center JPanel centerPanel = new JPanel(new BorderLayout()); JTabbedPane serverSettingsTab = new JTabbedPane(); JPanel serverSettingsPanel = new JPanel(new GridLayout(9, 1)); serverSettingsTab.add("Server Settings", serverSettingsPanel); serverSettingsPanel.add(new JLabel("Base Settings")); JPanel baseSettings1 = new JPanel(new GridLayout(1, 2)); JPanel baseSettings2 = new JPanel(new GridLayout(1, 2)); JPanel baseSettings3 = new JPanel(new GridLayout(1, 2)); JPanel baseSettings4 = new JPanel(new GridLayout(1, 2)); serverSettingsPanel.add(baseSettings1); serverSettingsPanel.add(baseSettings2); serverSettingsPanel.add(baseSettings3); serverSettingsPanel.add(baseSettings4); serverSettingsPanel.add(new JLabel("Zoom Levels")); JPanel zoomPanel = new JPanel(new GridLayout(1, 2)); serverSettingsPanel.add(zoomPanel); serverSettingsPanel.add(new JLabel("Tile Dimensions")); JPanel tileDimensionsPanel = new JPanel(new GridLayout(1, 2)); serverSettingsPanel.add(tileDimensionsPanel); JPanel protocolPanel = new JPanel(); protocolPanel.add(new JLabel("Protocol:")); protocolPanel.add(protocolTF); JPanel serverPanel = new JPanel(); serverPanel.add(new JLabel("Server:")); serverPanel.add(serverTF); baseSettings1.add(protocolPanel); baseSettings1.add(serverPanel); JPanel portPanel = new JPanel(); portPanel.add(new JLabel("Port:")); portPanel.add(portTF); JPanel directoryPanel = new JPanel(); directoryPanel.add(new JLabel("Directory:")); directoryPanel.add(directoryTF); baseSettings2.add(portPanel); baseSettings2.add(directoryPanel); JPanel maxDownPanel = new JPanel(); maxDownPanel.add(new JLabel("Max Parallel Downloads:")); maxDownPanel.add(maxDownloadsTF); JPanel licenseUrlPanel = new JPanel(); licenseUrlPanel.add(new JLabel("License's URL:")); licenseUrlPanel.add(licenseUrlTF); baseSettings3.add(maxDownPanel); baseSettings3.add(licenseUrlPanel); JPanel mapperPanel = new JPanel(); mapperPanel.add(new JLabel("Mapper Class:")); mapperPanel.add(mapperClassTF); baseSettings4.add(mapperPanel); JPanel prefixPanel = new JPanel(); prefixPanel.add(new JLabel("Prefix:")); prefixPanel.add(prefixTF); baseSettings4.add(prefixPanel); JPanel minZoomPanel = new JPanel(); minZoomPanel.add(new JLabel("Minimum:")); minZoomPanel.add(minZoomLevelTF); JPanel maxZoomPanel = new JPanel(); maxZoomPanel.add(new JLabel("Maximum:")); maxZoomPanel.add(maxZoomLevelTF); zoomPanel.add(minZoomPanel); zoomPanel.add(maxZoomPanel); JPanel tileXPanel = new JPanel(); tileXPanel.add(new JLabel("Width (X):")); tileXPanel.add(tileSizeXTF); tileXPanel.add(new JLabel("pixels")); JPanel tileYPanel = new JPanel(); tileYPanel.add(new JLabel("Height (Y):")); tileYPanel.add(tileSizeYTF); tileYPanel.add(new JLabel("pixels")); tileDimensionsPanel.add(tileXPanel); tileDimensionsPanel.add(tileYPanel); JTabbedPane displayOptionsTab = new JTabbedPane(); JPanel displayOptions = new JPanel(new GridLayout(3, 2)); displayOptionsTab.add("Display Options", displayOptions); JPanel showFramesPanel = new JPanel(); showFramesPanel.add(showFrames); displayOptions.add(showFramesPanel); JPanel backgroundPanel = new JPanel(); backgroundPanel.add(backgroundColor); backgroundPanel.add(setBgColorBtn); displayOptions.add(backgroundPanel); JPanel showNamesPanel = new JPanel(); showNamesPanel.add(showNames); displayOptions.add(showNamesPanel); JPanel foregroundPanel = new JPanel(); foregroundPanel.add(foregroundColor); foregroundPanel.add(setFgColorBtn); displayOptions.add(foregroundPanel); JPanel showCompleteMapPanel = new JPanel(); showCompleteMapPanel.add(showCompleteMap); showCompleteMapPanel.add(fixedZoom); displayOptions.add(showCompleteMapPanel); centerPanel.add(serverSettingsTab, BorderLayout.NORTH); centerPanel.add(displayOptionsTab, BorderLayout.CENTER); // laber panel JTabbedPane infoTab = new JTabbedPane(); JPanel infoPanel = new JPanel(); infoTab.add("Information", infoPanel); infoPanel.add(new JLabel("Info:")); infoPanel.add(warningTF); infoPanel.add(new JLabel(" ")); infoPanel.add(showLicenseBtn); centerPanel.add(infoTab, BorderLayout.SOUTH); content.add(centerPanel); // create and add the command panel (south) JPanel commandPanel = new JPanel(); commandPanel.add(acceptBtn); commandPanel.add(resetBtn); commandPanel.add(cancelBtn); content.add(commandPanel); } /** * Shows this dialog. * * @return true if the new selection was accepted, false if canceled. **/ public boolean showDialog() { setSize(900,700); setVisible(true); return accepted; } public Vector getNames(){ Vector res = new Vector(); for(int i=0;i selectionCB; // selection of predefined server settings + // customize private JTextField protocolTF; private JTextField serverTF; private JTextField portTF; private JTextField directoryTF; private JTextField prefixTF; private JTextField minZoomLevelTF; private JTextField maxZoomLevelTF; private JTextField maxDownloadsTF; private JTextField tileSizeXTF; private JTextField tileSizeYTF; private JTextField nameTF; private JTextField licenseUrlTF; private JTextField mapperClassTF; private JTextField warningTF; // display and cache settings private JCheckBox showFrames; private JCheckBox fixedZoom; private JCheckBox showNames; private JCheckBox showCompleteMap; private JLabel backgroundColor; private JButton setBgColorBtn; private JLabel foregroundColor; private JButton setFgColorBtn; private JButton showLicenseBtn; // command buttons private JButton acceptBtn; private JButton resetBtn; private JButton cancelBtn; private boolean accepted; private Properties origSettings; private LicenseDialog licenseDialog; }