From 91930867f4677a92233382aa78449d4cb2bae413 Mon Sep 17 00:00:00 2001 From: Stefano Date: Wed, 10 Mar 2010 03:42:01 +0100 Subject: [PATCH] Repair some bugs with .form Netbeans file and refresh everything... --- lib/nblibraries.properties | 6 + lib/swing-layout/swing-layout-1.0.4-doc.zip | Bin 0 -> 77859 bytes lib/swing-layout/swing-layout-1.0.4-src.zip | Bin 0 -> 69859 bytes lib/swing-layout/swing-layout-1.0.4.jar | Bin 0 -> 117412 bytes nbproject/build-impl.xml | 184 +- nbproject/genfiles.properties | 4 +- nbproject/private/private.properties | 4 +- nbproject/project.properties | 14 +- src/PopUp/PopUp.form | 3 - src/PopUp/PopUp.java | 18 +- src/PopUp/linkInfo.java | 2 - src/freimapgsoc/DataSource.java | 59 +- src/freimapgsoc/Flow.java | 4 - src/freimapgsoc/LatLonJsDataSource.java | 30 +- src/freimapgsoc/Layer.java | 7 +- src/freimapgsoc/LayerForm.form | 22 +- src/freimapgsoc/LayerForm.java | 64 +- src/freimapgsoc/MainLayer.form | 1619 ------------- src/freimapgsoc/MainLayer.java | 1999 ----------------- src/freimapgsoc/MysqlDataSource.java | 27 +- src/freimapgsoc/OlsrdDataSource.java | 31 +- src/freimapgsoc/Start.java | 2 +- src/freimapgsoc/YamlDataSource.java | 25 + src/freimapgsoc/xmlDataSource.java | 25 + .../freimapgsoc}/FileMenu.java | 31 +- 25 files changed, 385 insertions(+), 3795 deletions(-) create mode 100644 lib/swing-layout/swing-layout-1.0.4-doc.zip create mode 100644 lib/swing-layout/swing-layout-1.0.4-src.zip create mode 100644 lib/swing-layout/swing-layout-1.0.4.jar delete mode 100755 src/freimapgsoc/MainLayer.form delete mode 100755 src/freimapgsoc/MainLayer.java rename {src/FileMngmt => test/freimapgsoc}/FileMenu.java (77%) diff --git a/lib/nblibraries.properties b/lib/nblibraries.properties index f855391..04a8574 100755 --- a/lib/nblibraries.properties +++ b/lib/nblibraries.properties @@ -17,3 +17,9 @@ libs.CopyLibs.classpath=\ ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar libs.absolutelayout.classpath=\ ${base}/absolutelayout/AbsoluteLayout.jar +libs.swing-layout.classpath=\ + ${base}/swing-layout/swing-layout-1.0.4.jar +libs.swing-layout.javadoc=\ + ${base}/swing-layout/swing-layout-1.0.4-doc.zip +libs.swing-layout.src=\ + ${base}/swing-layout/swing-layout-1.0.4-src.zip diff --git a/lib/swing-layout/swing-layout-1.0.4-doc.zip b/lib/swing-layout/swing-layout-1.0.4-doc.zip new file mode 100644 index 0000000000000000000000000000000000000000..6ea4f2b37eb532b3df44fdd18642d3135ecb19a5 GIT binary patch literal 77859 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 MR*8lQ=ske`4_(im+W-In literal 0 HcmV?d00001 diff --git a/lib/swing-layout/swing-layout-1.0.4-src.zip b/lib/swing-layout/swing-layout-1.0.4-src.zip new file mode 100644 index 0000000000000000000000000000000000000000..ec9836ee0cb0aacd6fef2f18272c8ebd097c390f GIT binary patch literal 69859 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

K}ICR3T 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 literal 0 HcmV?d00001 diff --git a/lib/swing-layout/swing-layout-1.0.4.jar b/lib/swing-layout/swing-layout-1.0.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..46fe3a2ee1308ea55cdee3f71365649cbe970d25 GIT binary patch literal 117412 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

x4CdnKV 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 literal 0 HcmV?d00001 diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml index baf7609..8d75fea 100755 --- a/nbproject/build-impl.xml +++ b/nbproject/build-impl.xml @@ -42,23 +42,27 @@ is divided into following sections: - - - - - + + + + + - - - + + + + + - + - + + + - + @@ -113,21 +117,52 @@ is divided into following sections: or ant -Dplatforms.${platform.active}.home=<path_to_JDK_home> jar (where no properties file is used) - + - + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + @@ -162,6 +197,7 @@ is divided into following sections: + @@ -177,11 +213,9 @@ is divided into following sections: - - - - - + + + @@ -232,7 +266,8 @@ is divided into following sections: - + + @@ -271,7 +306,7 @@ is divided into following sections: - + @@ -286,6 +321,7 @@ is divided into following sections: + @@ -347,10 +383,11 @@ is divided into following sections: + - - + + @@ -371,8 +408,9 @@ is divided into following sections: - - + + + @@ -399,7 +437,22 @@ is divided into following sections: COMPILATION SECTION =================== --> - + + + + + + + + + + + + + + + + @@ -460,10 +513,10 @@ is divided into following sections: - + - + @@ -506,7 +559,28 @@ is divided into following sections: ${platform.java} -jar "${dist.jar.resolved}" - + + + + + + + + + + + + + + + + + + + + + + @@ -522,13 +596,16 @@ is divided into following sections: + + + - + - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties index 2417afd..5fca1bc 100755 --- a/nbproject/genfiles.properties +++ b/nbproject/genfiles.properties @@ -4,8 +4,8 @@ build.xml.stylesheet.CRC32=958a1d3e@1.26.1.45 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=56b42000 -nbproject/build-impl.xml.script.CRC32=b81a19ed -nbproject/build-impl.xml.stylesheet.CRC32=5c621a33@1.26.2.45 +nbproject/build-impl.xml.script.CRC32=727f9f53 +nbproject/build-impl.xml.stylesheet.CRC32=576378a2@1.32.1.45 nbproject/management-build-impl.xml.data.CRC32=add1b344 nbproject/management-build-impl.xml.script.CRC32=253f0558 nbproject/management-build-impl.xml.stylesheet.CRC32=545273be@1.0.0.3 diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties index abc8363..a726549 100644 --- a/nbproject/private/private.properties +++ b/nbproject/private/private.properties @@ -3,5 +3,5 @@ do.depend=false do.jar=true javac.debug=true javadoc.preview=true -jaxws.endorsed.dir=/Applications/NetBeans/NetBeans 6.7.1.app/Contents/Resources/NetBeans/java2/modules/ext/jaxws21/api:/Applications/NetBeans/NetBeans 6.7.1.app/Contents/Resources/NetBeans/ide11/modules/ext/jaxb/api -user.properties.file=/Users/stefanopilla/.netbeans/6.7/build.properties +jaxbwiz.endorsed.dirs=/Applications/NetBeans/NetBeans 6.8.app/Contents/Resources/NetBeans/ide12/modules/ext/jaxb/api +user.properties.file=/Users/Stefano/.netbeans/6.8/build.properties diff --git a/nbproject/project.properties b/nbproject/project.properties index e1243be..b0a9747 100755 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -20,6 +20,7 @@ debug.test.classpath=\ dist.dir=dist dist.jar=${dist.dir}/FreimapGSoC.jar dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= excludes= file.reference.jcommon-1.0.8.jar=lib/jcommon-1.0.8.jar file.reference.jfreechart-1.0.4.jar=lib/jfreechart-1.0.4.jar @@ -47,12 +48,13 @@ javac.classpath=\ ${file.reference.swing-worker.jar}:\ ${file.reference.swingx-bean.jar}:\ ${file.reference.swingx.jar}:\ - ${libs.absolutelayout.classpath} + ${libs.absolutelayout.classpath}:\ + ${libs.swing-layout.classpath} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false -javac.source=1.5 -javac.target=1.5 +javac.source=1.6 +javac.target=1.6 javac.test.classpath=\ ${javac.classpath}:\ ${build.classes.dir}:\ @@ -69,6 +71,12 @@ javadoc.splitindex=true javadoc.use=true javadoc.version=false javadoc.windowtitle= +jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api" +jnlp.codebase.type=local +jnlp.descriptor=application +jnlp.enabled=false +jnlp.offline-allowed=false +jnlp.signed=false main.class=freimapgsoc.Start manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF diff --git a/src/PopUp/PopUp.form b/src/PopUp/PopUp.form index 5354221..5303443 100755 --- a/src/PopUp/PopUp.form +++ b/src/PopUp/PopUp.form @@ -402,9 +402,6 @@ - - - diff --git a/src/PopUp/PopUp.java b/src/PopUp/PopUp.java index cde6573..c5a31c0 100755 --- a/src/PopUp/PopUp.java +++ b/src/PopUp/PopUp.java @@ -33,7 +33,6 @@ import javax.swing.SwingUtilities; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import org.jdesktop.application.Action; /** * @@ -95,7 +94,7 @@ public PopUp(MapNode from) { initComponents(); InetAddress address = null; try { - this.jmdns = JmDNS.create(address.getByName(from.id)); + this.jmdns = JmDNS.create(address.getByName(from.ip)); jmdns.addServiceTypeListener(this); infoNode(from); } catch (IOException ex) { @@ -145,7 +144,7 @@ public PopUp(MapNode from, MapNode to, Link link) { this.link = link; aboutNodes(); - n1Ip.setText(from.id); + n1Ip.setText(from.ip); } @@ -193,10 +192,10 @@ public PopUp(JmDNS jmdns) throws IOException { } public void infoNode(MapNode node) { - n1Ip.setText(node.id); + n1Ip.setText(node.ip); n1Name.setText(node.toString()); n1LatLon.setText(node.lat + " / " + node.lon); - n1Avail.setText(node.fqid); + n1Avail.setText(node.ip); //System.out.println(node.attributes.values()); Set i = node.attributes.entrySet(); Set keySet = node.attributes.keySet(); @@ -208,7 +207,7 @@ public void infoNode(MapNode node) { } public void aboutNodes() { - n1Ip.setText(from.id); + n1Ip.setText(from.ip); if (from.lat == 0 || from.lat == 0) { n1LatLon.setText(from.DEFAULT_LAT + "/" + from.DEFAULT_LON); } @@ -402,7 +401,7 @@ private void initComponents() { liveServicesButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(freimapgsoc.FreimapGSoCApp.class).getContext().getResourceMap(PopUp.class); + org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance().getContext().getResourceMap(PopUp.class); setTitle(resourceMap.getString("Form.title")); // NOI18N setAlwaysOnTop(true); setLocationByPlatform(true); @@ -545,12 +544,11 @@ private void initComponents() { jLabel3.setName("jLabel3"); // NOI18N - javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(freimapgsoc.FreimapGSoCApp.class).getContext().getActionMap(PopUp.class, this); - addServicesButton.setAction(actionMap.get("addServices")); // NOI18N addServicesButton.setText(resourceMap.getString("addServicesButton.text")); // NOI18N addServicesButton.setActionCommand(resourceMap.getString("addServicesButton.actionCommand")); // NOI18N addServicesButton.setName("addServicesButton"); // NOI18N + javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance().getContext().getActionMap(PopUp.class, this); ReloadServicesButton.setAction(actionMap.get("reloadServices")); // NOI18N ReloadServicesButton.setText(resourceMap.getString("reloadServices.text")); // NOI18N ReloadServicesButton.setName("reloadServices"); // NOI18N @@ -667,14 +665,12 @@ public void run() { }); } - @Action public void addServices() { new addServices(types, jmdns).setVisible(true); // jmdns.registerServiceType(types.lastElement().toString()); } - @Action public void reloadServices() { try { sdLog.append("All Services Reloaded...\n"); diff --git a/src/PopUp/linkInfo.java b/src/PopUp/linkInfo.java index 4344ee2..67076fc 100644 --- a/src/PopUp/linkInfo.java +++ b/src/PopUp/linkInfo.java @@ -36,8 +36,6 @@ private void initComponents() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setName("Form"); // NOI18N - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(freimapgsoc.FreimapGSoCApp.class).getContext().getResourceMap(linkInfo.class); - jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("jPanel1.border.title"))); // NOI18N jPanel1.setName("jPanel1"); // NOI18N javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); diff --git a/src/freimapgsoc/DataSource.java b/src/freimapgsoc/DataSource.java index 41ce919..96ee171 100755 --- a/src/freimapgsoc/DataSource.java +++ b/src/freimapgsoc/DataSource.java @@ -46,58 +46,14 @@ The core may also request to retrieve a LinkInfo profile (for Links) or a NodePr */ public interface DataSource { - /* public DataSource(int dataid);{ - createNewDataSource(dataid); - }*/ - - - /*public void createNewDataSource(int dataid) { - - if (dataid == 0000) { - OlsrdDataSource olsr = new OlsrdDataSource(); - if (!currentID.equals("00000")) { - currentID = String.valueOf(dataid) + String.valueOf(i); - } else { - i = 0; - currentID = String.valueOf(dataid) + String.valueOf(i); - } - //OLSR DATASOURCE - } - if (dataid == 0001) { - LatLonJsDataSource latlon = new LatLonJsDataSource(); - if (!currentID.equals("00010")) { - currentID = String.valueOf(dataid) + String.valueOf(i); - } else { - i = 0; - currentID = String.valueOf(dataid) + String.valueOf(i); - } - //NAMESERVICE - } - if (dataid == 0010) { - MysqlDataSource mysql = new MysqlDataSource(); - if (!currentID.equals("00100")) { - currentID = String.valueOf(dataid) + String.valueOf(i); - } else { - i = 0; - currentID = String.valueOf(dataid) + String.valueOf(i); - } - //MYSQL - } - - } - * */ + public void init(); /** Initialize this data source with its configuration parameters. **/ - // public HashMap read_conf(HashMap configuration) { - //} + public HashMap read_conf(HashMap configuration); - /*public String getId() { - return this.id; - } + public String getId(); - public String getCurrentID(){ - return this.currentID; - }*/ + public String getCurrentID(); /** Initialize this data source with path file. **/ //public void init(String path); @@ -164,12 +120,5 @@ public String getCurrentID(){ public void getLinkCountProfile(MapNode node, NodeInfo info); - //public String id=null; - //public int i = 0; - //String currentID; - //String currentIDolsr; - //String currentIDmysql; - //String currentIDnameservice; - //String currentIDfile; } diff --git a/src/freimapgsoc/Flow.java b/src/freimapgsoc/Flow.java index 4cf77d4..186c965 100755 --- a/src/freimapgsoc/Flow.java +++ b/src/freimapgsoc/Flow.java @@ -61,10 +61,6 @@ private void initComponents() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setName("Form"); // NOI18N - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(freimapgsoc.FreimapGSoCApp.class).getContext().getResourceMap(Flow.class); - jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N - jLabel1.setName("jLabel1"); // NOI18N - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( diff --git a/src/freimapgsoc/LatLonJsDataSource.java b/src/freimapgsoc/LatLonJsDataSource.java index a55c4e9..e5b1ef8 100755 --- a/src/freimapgsoc/LatLonJsDataSource.java +++ b/src/freimapgsoc/LatLonJsDataSource.java @@ -21,6 +21,10 @@ */ public class LatLonJsDataSource implements DataSource { + public LatLonJsDataSource(){ + + } + public LatLonJsDataSource(String path){ this.init(path); } @@ -53,15 +57,15 @@ else if ((line.length() > 4) && (line.substring(0, 4).equals("Link"))) { addInterfaces(path); } } catch (MalformedURLException mue) { - System.out.println("failed!"); - throw new IllegalStateException("Invalid server URL: " + sServerURL); + System.out.println("failed! Invalid server URL: " + sServerURL); } catch (IOException ioe) { System.out.println("failed! IOException in LatLonJSDataSource"); ioe.printStackTrace(); } addInterfaces(path); config.put(nodes, links); - + Layer l=new Layer(this); + l.createLayer(); return config; } @@ -408,4 +412,24 @@ public static void main(String[] args) { public HashMap nodeByName = new HashMap(); public long initTime = System.currentTimeMillis() / 1000; + @Override + public void init() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap read_conf(HashMap configuration) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getId() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getCurrentID() { + throw new UnsupportedOperationException("Not supported yet."); + } + } diff --git a/src/freimapgsoc/Layer.java b/src/freimapgsoc/Layer.java index a9a784b..c638df0 100644 --- a/src/freimapgsoc/Layer.java +++ b/src/freimapgsoc/Layer.java @@ -16,6 +16,7 @@ public class Layer { public Layer(DataSource datasource){ this.currentDs=datasource; + new MainLayer(currentDs).setVisible(true); } public Layer(HashMap, Vector> datasources) { @@ -40,9 +41,8 @@ public boolean setCurrentTime(long crtTime) { return false; } - /* + public void createLayer() { - currentDs = new DataSource(); try { sources.put(this.id, currentDs.getCurrentID()); Iterator j = sources.keySet().iterator(); @@ -55,10 +55,9 @@ public void createLayer() { return; } } -*/ public void initLayout() { - + new MainLayer(currentDs).setVisible(true); } public double id; diff --git a/src/freimapgsoc/LayerForm.form b/src/freimapgsoc/LayerForm.form index cf8965d..daff577 100644 --- a/src/freimapgsoc/LayerForm.form +++ b/src/freimapgsoc/LayerForm.form @@ -25,13 +25,13 @@ -

+ - + @@ -41,7 +41,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -175,7 +175,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -438,7 +438,7 @@ - + @@ -452,7 +452,7 @@ - + @@ -466,7 +466,7 @@ - + diff --git a/src/freimapgsoc/LayerForm.java b/src/freimapgsoc/LayerForm.java index 5f64c6a..ed60a3f 100644 --- a/src/freimapgsoc/LayerForm.java +++ b/src/freimapgsoc/LayerForm.java @@ -41,6 +41,7 @@ import javax.imageio.ImageIO; import javax.swing.JButton; import javax.swing.JLabel; +import javax.swing.JMenuItem; import javax.swing.JSlider; import javax.swing.event.MouseInputAdapter; import org.jdesktop.swingx.JXMapViewer; @@ -230,7 +231,7 @@ private void initComponents() { jMenuBar1 = new javax.swing.JMenuBar(); File = new javax.swing.JMenu(); OpenFile = new javax.swing.JMenu(); - OpenRecent = new javax.swing.JMenu(); + recentFileMenu = new javax.swing.JMenu(); jSeparator1 = new javax.swing.JSeparator(); jMenuItem3 = new javax.swing.JMenuItem(); jSeparator3 = new javax.swing.JSeparator(); @@ -347,24 +348,24 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { leftPanelLayout.setVerticalGroup( leftPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, leftPanelLayout.createSequentialGroup() - .addContainerGap(278, Short.MAX_VALUE) + .addContainerGap(280, Short.MAX_VALUE) .addComponent(addNodeButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(takescrshtButton) .addGap(198, 198, 198)) ); - latLonLabel.setFont(new java.awt.Font("Lucida Grande", 0, 10)); // NOI18N + latLonLabel.setFont(new java.awt.Font("Lucida Grande", 0, 10)); latLonLabel.setText(" "); latLonLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); latLonLabel.setName("latLonLabel"); // NOI18N - xValue.setFont(new java.awt.Font("Lucida Grande", 0, 10)); // NOI18N + xValue.setFont(new java.awt.Font("Lucida Grande", 0, 10)); xValue.setText(" "); xValue.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); xValue.setName("xValue"); // NOI18N - yValue.setFont(new java.awt.Font("Lucida Grande", 0, 10)); // NOI18N + yValue.setFont(new java.awt.Font("Lucida Grande", 0, 10)); yValue.setText(" "); yValue.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); yValue.setName("yValue"); // NOI18N @@ -380,15 +381,15 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { OpenFile.setName("OpenFile"); // NOI18N File.add(OpenFile); - OpenRecent.setText("Open Recent Files"); - OpenRecent.setFont(new java.awt.Font("Lucida Grande", 0, 12)); - OpenRecent.setName("OpenRecent"); // NOI18N - File.add(OpenRecent); + recentFileMenu.setText("Open Recent Files"); + recentFileMenu.setFont(new java.awt.Font("Lucida Grande", 0, 12)); + recentFileMenu.setName("recentFileMenu"); // NOI18N + File.add(recentFileMenu); jSeparator1.setName("jSeparator1"); // NOI18N File.add(jSeparator1); - jMenuItem3.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + jMenuItem3.setFont(new java.awt.Font("Lucida Grande", 0, 12)); jMenuItem3.setText("Preferences"); jMenuItem3.setName("jMenuItem3"); // NOI18N File.add(jMenuItem3); @@ -396,7 +397,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jSeparator3.setName("jSeparator3"); // NOI18N File.add(jSeparator3); - Close.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + Close.setFont(new java.awt.Font("Lucida Grande", 0, 12)); Close.setText("Exit"); Close.setName("Close"); // NOI18N Close.addActionListener(new java.awt.event.ActionListener() { @@ -412,13 +413,13 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenu2.setFont(new java.awt.Font("Lucida Grande", 0, 12)); jMenu2.setName("jMenu2"); // NOI18N - ShowMiniMap.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + ShowMiniMap.setFont(new java.awt.Font("Lucida Grande", 0, 12)); ShowMiniMap.setSelected(true); ShowMiniMap.setText("Show MiniMap"); ShowMiniMap.setName("ShowMiniMap"); // NOI18N jMenu2.add(ShowMiniMap); - ShowNodes.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + ShowNodes.setFont(new java.awt.Font("Lucida Grande", 0, 12)); ShowNodes.setSelected(true); ShowNodes.setText("Show Nodes"); ShowNodes.setName("ShowNodes"); // NOI18N @@ -429,25 +430,25 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }); jMenu2.add(ShowNodes); - ShowLinks.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + ShowLinks.setFont(new java.awt.Font("Lucida Grande", 0, 12)); ShowLinks.setSelected(true); ShowLinks.setText("Show Links"); ShowLinks.setName("ShowLinks"); // NOI18N jMenu2.add(ShowLinks); - ShowZoomButton.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + ShowZoomButton.setFont(new java.awt.Font("Lucida Grande", 0, 12)); ShowZoomButton.setSelected(true); ShowZoomButton.setText("Show Zoom Button"); ShowZoomButton.setName("ShowZoomButton"); // NOI18N jMenu2.add(ShowZoomButton); - ShowZoomSlider.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + ShowZoomSlider.setFont(new java.awt.Font("Lucida Grande", 0, 12)); ShowZoomSlider.setSelected(true); ShowZoomSlider.setText("Show Zoom Slider"); ShowZoomSlider.setName("ShowZoomSlider"); // NOI18N jMenu2.add(ShowZoomSlider); - ShowLatLon.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + ShowLatLon.setFont(new java.awt.Font("Lucida Grande", 0, 12)); ShowLatLon.setSelected(true); ShowLatLon.setText("Show Lat Lon Label"); ShowLatLon.setName("ShowLatLon"); // NOI18N @@ -456,12 +457,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jSeparator2.setName("jSeparator2"); // NOI18N jMenu2.add(jSeparator2); - GoHere.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + GoHere.setFont(new java.awt.Font("Lucida Grande", 0, 12)); GoHere.setText("Go Here"); GoHere.setName("GoHere"); // NOI18N jMenu2.add(GoHere); - jMenuItem1.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + jMenuItem1.setFont(new java.awt.Font("Lucida Grande", 0, 12)); jMenuItem1.setText("Search"); jMenuItem1.setName("jMenuItem1"); // NOI18N jMenu2.add(jMenuItem1); @@ -472,7 +473,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jMenu1.setFont(new java.awt.Font("Lucida Grande", 0, 12)); jMenu1.setName("jMenu1"); // NOI18N - jMenuItem2.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N + jMenuItem2.setFont(new java.awt.Font("Lucida Grande", 0, 12)); jMenuItem2.setText("About Freimap"); jMenuItem2.setName("jMenuItem2"); // NOI18N jMenu1.add(jMenuItem2); @@ -957,7 +958,6 @@ public void getLinkCountProfile(MapNode node, NodeInfo info) { private javax.swing.JMenu File; private javax.swing.JMenuItem GoHere; private javax.swing.JMenu OpenFile; - private javax.swing.JMenu OpenRecent; private javax.swing.JCheckBoxMenuItem ShowLatLon; private javax.swing.JCheckBoxMenuItem ShowLinks; private javax.swing.JCheckBoxMenuItem ShowMiniMap; @@ -980,6 +980,7 @@ public void getLinkCountProfile(MapNode node, NodeInfo info) { private javax.swing.JComboBox listOfNodes; private org.jdesktop.swingx.JXMapViewer mainMap; private org.jdesktop.swingx.JXMapViewer miniMap; + private javax.swing.JMenu recentFileMenu; private javax.swing.JButton takescrshtButton; private javax.swing.JLabel xValue; private javax.swing.JLabel yValue; @@ -992,8 +993,29 @@ public void getLinkCountProfile(MapNode node, NodeInfo info) { private Layer l; private int layercount = 0; private Vector layers = new Vector(); + public static JMenuItem recentMenuItem; public MapNode getNodeByIp(String ip) { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public void init() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap read_conf(HashMap configuration) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getId() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getCurrentID() { + throw new UnsupportedOperationException("Not supported yet."); + } } diff --git a/src/freimapgsoc/MainLayer.form b/src/freimapgsoc/MainLayer.form deleted file mode 100755 index b02e924..0000000 --- a/src/freimapgsoc/MainLayer.form +++ /dev/null @@ -1,1619 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/src/freimapgsoc/MainLayer.java b/src/freimapgsoc/MainLayer.java deleted file mode 100755 index d14b53a..0000000 --- a/src/freimapgsoc/MainLayer.java +++ /dev/null @@ -1,1999 +0,0 @@ -/* - * FreimapGSoCView.java - */ -package freimapgsoc; - -import FileMngmt.FileMenu; -import freimapgsoc.*; -import java.io.FileNotFoundException; -import java.text.Format; -import java.text.SimpleDateFormat; -import java.util.Date; -import PopUp.PopUp; -import PopUp.PopUpMain; -import java.awt.AWTException; -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics2D; -import java.awt.Point; -import java.awt.Polygon; -import java.awt.Rectangle; -import java.awt.Robot; -import java.awt.Toolkit; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Vector; -import org.jdesktop.application.Action; -import org.jdesktop.application.SingleFrameApplication; -import org.jdesktop.application.FrameView; -import java.awt.geom.Point2D; -import java.awt.geom.Ellipse2D; -import java.awt.image.BufferedImage; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.StringTokenizer; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.imageio.ImageIO; -import javax.jmdns.JmDNS; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JFileChooser; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JMenu; -import javax.swing.JMenuItem; -import javax.swing.JSlider; -import javax.swing.event.MouseInputAdapter; -import org.jdesktop.swingx.JXMapViewer; -import org.jdesktop.swingx.mapviewer.DefaultTileFactory; -import org.jdesktop.swingx.mapviewer.GeoPosition; -import org.jdesktop.swingx.mapviewer.TileFactory; -import org.jdesktop.swingx.mapviewer.TileFactoryInfo; -import org.jdesktop.swingx.mapviewer.Waypoint; -import org.jdesktop.swingx.mapviewer.WaypointPainter; -import org.jdesktop.swingx.mapviewer.WaypointRenderer; -import org.jdesktop.swingx.painter.CompoundPainter; -import org.jdesktop.swingx.painter.Painter; - -/** - * The application's main frame. - */ -public class MainLayer implements DataSource { - - public MainLayer(DataSource source) { - - final int maxzoomlevel = 14; - final int totalmapzoom = 14; - - //public TileFactoryInfo(int minimumZoomLevel,int maximumZoomLevel,int totalMapZoom,int tileSize,boolean xr2l,boolean yt2b,String baseURL,String xparam,String yparam,String zparam)( - TileFactoryInfo info = new TileFactoryInfo(0, maxzoomlevel, totalmapzoom, 256, false, false, "http://tile.openstreetmap.org", "x", "y", "z") { - - public String getTileUrl(int x, int y, int zoom) { - zoom = maxzoomlevel - zoom; - return this.baseURL + "/" + zoom + "/" + x + "/" + y + ".png"; - } - }; - - //In a future: possibilty to change this with settings menu parameters; now is in Italy Rome - tf = new DefaultTileFactory(info); - //If there is no Lat/Lon Data - DEFAULT_LAT = 41.8639;//In Rome - DEFAULT_LON = 12.5535;//In Rome - def = new GeoPosition(DEFAULT_LAT, DEFAULT_LON); - initComponents(); - initMapComponents(); - printDateTime(); - } - - public void storeLatLon(Vector nodes) { - latlon = new HashMap(); - for (int i = 0; i < nodes.size(); i++) { - Vector latlon2 = new Vector(); - latlon2.add(String.format("%.2f", nodes.elementAt(i).lat)); - latlon2.add(String.format("%.2f", nodes.elementAt(i).lon)); - //System.out.println("LatLon vector: " + latlon2); - //System.out.println("Value:" + nodes.elementAt(i).toString()); - latlon.put(latlon2, nodes.elementAt(i).toString()); - } - } - - public void mouseMovedOnNodes(MouseEvent evt, GeoPosition posNode) { - - Point2D gp_pt = mainMap.getTileFactory().geoToPixel(posNode, mainMap.getZoom()); - //convert to screen - Rectangle rect = mainMap.getViewportBounds(); - Point converted_gp_pt = new Point((int) gp_pt.getX() - rect.x, (int) gp_pt.getY() - rect.y); - //check if near the mouse - if (converted_gp_pt.distance(evt.getPoint()) < 10) { - System.out.println("OK SEI SUL NODO!"); - } - } - - public void drawNodes(Vector nodes) { - for (int i = 0; i < nodes.size(); i++) { - final GeoPosition posNode = new GeoPosition(nodes.elementAt(i).lat, nodes.elementAt(i).lon); - final JButton waynode = new JButton(nodes.elementAt(i).toString()); - waynode.addActionListener(new ActionListener() { - - public void actionPerformed(ActionEvent e) { - System.out.println("The test2 button was clicked"); - } - }); - waypoints.add(new SwingWaypoint(waynode, posNode)); - painter.setRenderer(new WaypointRenderer() { - - public boolean paintWaypoint(Graphics2D g, JXMapViewer map, Waypoint wp) { - - g.setColor(Color.ORANGE); - JComponent component = ((SwingWaypoint) wp).getComponent(); - Point2D gp_pt = map.getTileFactory().geoToPixel(wp.getPosition(), map.getZoom()); - Rectangle rect = map.getViewportBounds(); - Point pt = new Point((int) gp_pt.getX() - rect.x, (int) gp_pt.getY() - rect.y); - if (mainMap.getZoom() < 14 && mainMap.getZoom() > 7) { - component.setLocation(pt); - g.fillOval(0, 0, 4, 4); - } else if (mainMap.getZoom() <= 7 && mainMap.getZoom() >= 5) { - component.setLocation(pt); - g.fillOval(0, 0, 5, 5); - g.setColor(Color.RED); - g.draw(new Ellipse2D.Double(-5.0, -5.0, 15.0, 15.0)); - } else if (mainMap.getZoom() == 4) { - component.setLocation(pt); - g.fillOval(0, 0, 6, 6); - g.setColor(Color.RED); - g.draw(new Ellipse2D.Double(-5.5, -5.5, 15.0, 15.0)); - } else { - component.setLocation(pt); - g.fillOval(0, 0, 7, 7); - g.setColor(Color.RED); - BasicStroke stroke = new BasicStroke(1.0f); - g.setStroke(stroke); - g.draw(new Ellipse2D.Double(-7.0, -7.0, 20.0, 20.0)); - } - return true; - - } - }); - - painter.setWaypoints(waypoints); - mainMap.setOverlayPainter(painter); - - } - } - - public void drawNodes(Vector nodes, Double lat, Double lon) { - for (int i = 0; i < nodes.size(); i++) { - GeoPosition posNode = new GeoPosition(nodes.elementAt(i).lat, nodes.elementAt(i).lon); - if (nodes.elementAt(i).lat == lat && nodes.elementAt(i).lon == lon) { - waypoints.add(new Waypoint(posNode)); - painter.setWaypoints(waypoints); - painter.setRenderer(new WaypointRenderer() { - - public boolean paintWaypoint(Graphics2D g, JXMapViewer map, Waypoint wp) { - g.setColor(Color.ORANGE); - if (mainMap.getZoom() < 17 && mainMap.getZoom() > 7) { - g.setColor(Color.RED); - g.drawLine(-2, -2, +2, +2); - g.drawLine(-2, +2, +2, -2); - return true; - } else if (mainMap.getZoom() <= 7 && mainMap.getZoom() >= 5) { - g.setColor(Color.RED); - g.drawLine(-3, -3, +3, +3); - g.drawLine(-3, +3, +3, -3); - return true; - } else if (mainMap.getZoom() == 4) { - g.setColor(Color.RED); - g.drawLine(-4, -4, +4, +4); - g.drawLine(-4, +4, +4, -4); - return true; - } else { - g.setColor(Color.RED); - g.drawLine(-5, -5, +5, +5); - g.drawLine(-5, +5, +5, -5); - return true; - } - } - }); - } else { - final JButton waynode = new JButton(nodes.elementAt(i).toString()); - waypoints.add(new SwingWaypoint(waynode, posNode)); - painter.setWaypoints(waypoints); - painter.setRenderer(new WaypointRenderer() { - - public boolean paintWaypoint(Graphics2D g, JXMapViewer map, Waypoint wp) { - map.add(waynode); - g.setColor(Color.ORANGE); - if (mainMap.getZoom() < 14 && mainMap.getZoom() > 7) { - g.fillOval(0, 0, 4, 4); - } else if (mainMap.getZoom() <= 7 && mainMap.getZoom() >= 5) { - g.fillOval(0, 0, 5, 5); - g.setColor(Color.RED); - g.draw(new Ellipse2D.Double(-5.0, -5.0, 15.0, 15.0)); - } else if (mainMap.getZoom() == 4) { - g.fillOval(0, 0, 6, 6); - g.setColor(Color.RED); - g.draw(new Ellipse2D.Double(-5.5, -5.5, 15.0, 15.0)); - } else { - g.fillOval(0, 0, 7, 7); - g.setColor(Color.RED); - BasicStroke stroke = new BasicStroke(1.0f); - g.setStroke(stroke); - g.draw(new Ellipse2D.Double(-7.0, -7.0, 20.0, 20.0)); - } - return true; - } - }); - } - - - } - mainMap.setOverlayPainter(painter); - - } - - //TO IMPLEMENT IT DOESN'T WORK - public void drawLinks(Vector links) { - for (int i = 0; i < links.size(); i++) { - GeoPosition posFrom = new GeoPosition(links.elementAt(i).source.lat, links.elementAt(i).source.lon); - GeoPosition posTo = new GeoPosition(links.elementAt(i).dest.lat, links.elementAt(i).dest.lon); - final Point2D ptFrom = mainMap.getTileFactory().geoToPixel(posFrom, mainMap.getZoom()); - final Point2D ptTo = mainMap.getTileFactory().geoToPixel(posTo, mainMap.getZoom()); - Rectangle rect = mainMap.getViewportBounds(); - final Point pt_gpFrom = new Point((int) ptFrom.getX() - rect.x, (int) ptFrom.getY() - rect.y); - final Point pt_gpTo = new Point((int) ptTo.getX() - rect.x, (int) ptTo.getY() - rect.y); - linkwaypoints.add(new Waypoint(posFrom)); - linkwaypoints.add(new Waypoint(posTo)); - painter = new WaypointPainter(); - painter.setWaypoints(linkwaypoints); - painter.setRenderer(new WaypointRenderer() { - - public boolean paintWaypoint(Graphics2D g, JXMapViewer map, Waypoint wp) { - g.setColor(Color.RED); - //System.out.println("ptFrom: " + pt_gpFrom.getX()); - //System.out.println("ptFrom: " + pt_gpFrom.getY()); - //System.out.println("ptTo:" + pt_gpTo.getX()); - //System.out.println("ptTo:" + pt_gpTo.getY()); - g.setStroke(new BasicStroke(1.5f)); - g.drawLine((int) ptFrom.getX(), (int) ptFrom.getY(), (int) ptTo.getX(), (int) ptTo.getY()); - return true; - } - }); - mainMap.setOverlayPainter(painter); - } - } - - public void drawAll(Vector links, Vector nodes) { - try { - if (links.size() == 0) { - if (nodes.size() != 0) { - //Draw Links - drawNodes(nodes); - } else if (nodes.size() == 0) { - if (countPop == 0) { - new InfoPopUp("There aren't DataSource file to draw!", "Open a file from File -> Open menu", "APPROVE").setVisible(true); - log.append("PopUp Message: There aren't DataSource file to draw! Open a file from File -> Open menu "); - countPop = 1; - } - } - } else { - if (nodes.size() == 0) { - if (countPop == 0) { - new InfoPopUp("There aren't DataSource file to draw", "Open a file from File -> Open menu", "APPROVE").setVisible(true); - log.append("PopUp Message: There aren't DataSource file to draw Open a file from File -> Open menu "); - countPop = 1; - } - } else if (nodes.size() != 0) { - - //Draw Nodes and Links - drawLinks(links); - drawNodes(nodes); - - } - } - - } catch (Exception e) { - log.append("PopUp Message: There aren't input file to draw! Open a file from File -> Open menu "); - } - } - - public void printDateTime() { - Format formatter = new SimpleDateFormat("EEE, dd/MM/yyyy"); - String today = formatter.format(new Date()); - SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss"); - Date now = new Date(); - String strTime = sdfTime.format(now); - dateInfo.setText(today + " - " + strTime); -// dateInfo.setText("Today : " + today + " - " + strTime); - - } - - - public boolean nodeIsPresent(String nodeName) { - boolean find = false; - for (int i = 0; i < nodes.size(); i++) { - System.out.println("node name:" + nodes.elementAt(i).toString()); - if (nodes.elementAt(i).toString().equals(nodeName)) { - System.out.println("node is present!"); - find = true; - } else { - find = false; - } - } - return find; - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - mainPanel = new javax.swing.JPanel(); - mapPanel = new javax.swing.JPanel(); - mainMap = new org.jdesktop.swingx.JXMapViewer(); - miniMap = new org.jdesktop.swingx.JXMapViewer(); - zoomSlider = new javax.swing.JSlider(); - zoomButtonIn = new javax.swing.JLabel(); - zoomButtonOut = new javax.swing.JLabel(); - serviceD = new javax.swing.JButton(); - goToDefaultPosition = new javax.swing.JButton(); - jPanel1 = new javax.swing.JPanel(); - jScrollPane1 = new javax.swing.JScrollPane(); - locatedNodes = new JList(locatedN); - dateInfo = new javax.swing.JLabel(); - yValue = new javax.swing.JLabel(); - yPos = new javax.swing.JLabel(); - xPos = new javax.swing.JLabel(); - xValue = new javax.swing.JLabel(); - latitudeValue = new javax.swing.JLabel(); - longitudeValue = new javax.swing.JLabel(); - Longitude = new javax.swing.JLabel(); - Latitude = new javax.swing.JLabel(); - jPanel2 = new javax.swing.JPanel(); - jLabel5 = new javax.swing.JLabel(); - ipLabel = new javax.swing.JLabel(); - latLabel = new javax.swing.JLabel(); - jLabel7 = new javax.swing.JLabel(); - jLabel11 = new javax.swing.JLabel(); - jLabel6 = new javax.swing.JLabel(); - fqidLabel = new javax.swing.JLabel(); - locatedLabel = new javax.swing.JLabel(); - jLabel8 = new javax.swing.JLabel(); - jLabel10 = new javax.swing.JLabel(); - ncLabel = new javax.swing.JLabel(); - lonLabel = new javax.swing.JLabel(); - jPanel3 = new javax.swing.JPanel(); - jSeparator4 = new javax.swing.JSeparator(); - jSeparator5 = new javax.swing.JSeparator(); - addNodeButton = new javax.swing.JButton(); - deleteNodeButton = new javax.swing.JButton(); - defaultButton = new javax.swing.JButton(); - menuBar = new javax.swing.JMenuBar(); - fileMenu = new javax.swing.JMenu(); - jMenu1 = new javax.swing.JMenu(); - xmlOpenMenu = new javax.swing.JMenuItem(); - jsOpenMenu = new javax.swing.JMenuItem(); - AppendMenu = new javax.swing.JMenu(); - xmlAppendMenu = new javax.swing.JMenuItem(); - jsAppendMenu = new javax.swing.JMenuItem(); - saveAsMenu = new javax.swing.JMenuItem(); - jSeparator12 = new javax.swing.JSeparator(); - recentFilesMenu = new javax.swing.JMenu(); - jSeparator13 = new javax.swing.JSeparator(); - deleteRecentMenu = new javax.swing.JMenuItem(); - jSeparator3 = new javax.swing.JSeparator(); - javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem(); - jMenu2 = new javax.swing.JMenu(); - jSeparator1 = new javax.swing.JSeparator(); - jMenuItem8 = new javax.swing.JMenuItem(); - jMenuItem6 = new javax.swing.JMenuItem(); - jMenuItem5 = new javax.swing.JMenuItem(); - jSeparator2 = new javax.swing.JSeparator(); - jMenuItem12 = new javax.swing.JMenuItem(); - jMenuItem7 = new javax.swing.JMenuItem(); - jMenuItem9 = new javax.swing.JMenuItem(); - viewMenu = new javax.swing.JMenu(); - mapNodesMenu = new javax.swing.JCheckBoxMenuItem(); - linksMenu = new javax.swing.JCheckBoxMenuItem(); - latLonMenu = new javax.swing.JCheckBoxMenuItem(); - jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem(); - zoomButtons = new javax.swing.JCheckBoxMenuItem(); - zoomSMenu = new javax.swing.JCheckBoxMenuItem(); - miniMapMenu = new javax.swing.JCheckBoxMenuItem(); - javax.swing.JMenu helpMenu = new javax.swing.JMenu(); - javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem(); - jMenuItem1 = new javax.swing.JMenuItem(); - contestMenu = new javax.swing.JPopupMenu(); - takePicture = new javax.swing.JMenuItem(); - addNodeM = new javax.swing.JMenuItem(); - goToDefaultPos = new javax.swing.JMenuItem(); - jSeparator6 = new javax.swing.JSeparator(); - File = new javax.swing.JMenu(); - saveSelNodes = new javax.swing.JMenuItem(); - Edit = new javax.swing.JMenu(); - applyFilter = new javax.swing.JMenuItem(); - findNode = new javax.swing.JMenuItem(); - goHere = new javax.swing.JMenuItem(); - View = new javax.swing.JMenu(); - mapNodes = new javax.swing.JMenuItem(); - maplinks = new javax.swing.JMenuItem(); - maplatlon = new javax.swing.JMenuItem(); - listofnodes = new javax.swing.JMenuItem(); - zoomMapB = new javax.swing.JMenuItem(); - zoomMapS = new javax.swing.JMenuItem(); - miniMapM = new javax.swing.JMenuItem(); - jSeparator7 = new javax.swing.JSeparator(); - selectAll = new javax.swing.JMenuItem(); - jSeparator8 = new javax.swing.JSeparator(); - aboutfreimap = new javax.swing.JMenuItem(); - contestMenuNode = new javax.swing.JPopupMenu(); - addNodeDS = new javax.swing.JMenuItem(); - centerMap = new javax.swing.JMenuItem(); - serviceDiscovery = new javax.swing.JMenuItem(); - ssh = new javax.swing.JMenuItem(); - jSeparator9 = new javax.swing.JSeparator(); - File1 = new javax.swing.JMenu(); - saveSelNodes1 = new javax.swing.JMenuItem(); - Edit1 = new javax.swing.JMenu(); - applyFilter1 = new javax.swing.JMenuItem(); - findNode1 = new javax.swing.JMenuItem(); - goHere1 = new javax.swing.JMenuItem(); - View1 = new javax.swing.JMenu(); - mapNodes1 = new javax.swing.JMenuItem(); - maplinks1 = new javax.swing.JMenuItem(); - maplatlon1 = new javax.swing.JMenuItem(); - listofnodes1 = new javax.swing.JMenuItem(); - zoomMapB1 = new javax.swing.JMenuItem(); - zoomMapS1 = new javax.swing.JMenuItem(); - miniMapM1 = new javax.swing.JMenuItem(); - jSeparator10 = new javax.swing.JSeparator(); - selectThisNode = new javax.swing.JMenuItem(); - selectAll1 = new javax.swing.JMenuItem(); - jSeparator11 = new javax.swing.JSeparator(); - aboutfreimap1 = new javax.swing.JMenuItem(); - - mainPanel.setDoubleBuffered(false); - mainPanel.setName("mainPanel"); // NOI18N - - mapPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("")); - mapPanel.setMaximumSize(new java.awt.Dimension(949, 604)); - mapPanel.setMinimumSize(new java.awt.Dimension(949, 604)); - mapPanel.setName("MapPanel"); // NOI18N - mapPanel.setRequestFocusEnabled(false); - mapPanel.setLayout(new java.awt.CardLayout()); - - mainMap.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); - mainMap.setAutoscrolls(true); - mainMap.setCenterPosition(def); - org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(freimapgsoc.FreimapGSoCApp.class).getContext().getResourceMap(MainLayer.class); - mainMap.setFont(resourceMap.getFont("mainMap.font")); // NOI18N - mainMap.setHorizontalWrapped(false); - mainMap.setName("mainMap"); // NOI18N - mainMap.setRecenterOnClickEnabled(true); - mainMap.setRestrictOutsidePanning(true); - mainMap.setTileFactory(tf); - mainMap.setZoom(14); - mainMap.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { - public void mouseMoved(java.awt.event.MouseEvent evt) { - mainMapMouseMoved(evt); - } - }); - - miniMap.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); - miniMap.setCenterPosition(def); - miniMap.setFont(resourceMap.getFont("miniMap.font")); // NOI18N - miniMap.setHorizontalWrapped(false); - miniMap.setName("miniMap"); // NOI18N - miniMap.setPreferredSize(new java.awt.Dimension(134, 134)); - miniMap.setTileFactory(tf); - miniMap.setZoom(14); - - javax.swing.GroupLayout miniMapLayout = new javax.swing.GroupLayout(miniMap); - miniMap.setLayout(miniMapLayout); - miniMapLayout.setHorizontalGroup( - miniMapLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 132, Short.MAX_VALUE) - ); - miniMapLayout.setVerticalGroup( - miniMapLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 132, Short.MAX_VALUE) - ); - - zoomSlider.setFont(resourceMap.getFont("zoomSlider.font")); // NOI18N - zoomSlider.setMajorTickSpacing(1); - zoomSlider.setMaximum(14); - zoomSlider.setMinorTickSpacing(14); - zoomSlider.setOrientation(javax.swing.JSlider.VERTICAL); - zoomSlider.setPaintLabels(true); - zoomSlider.setPaintTicks(true); - zoomSlider.setPaintTrack(false); - zoomSlider.setDoubleBuffered(true); - zoomSlider.setInverted(true); - zoomSlider.setMaximumSize(new java.awt.Dimension(150, 46)); - zoomSlider.setMinimumSize(new java.awt.Dimension(150, 46)); - zoomSlider.setName("zoomSlider"); // NOI18N - zoomSlider.setPreferredSize(new java.awt.Dimension(150, 46)); - zoomSlider.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - zoomSliderStateChanged(evt); - } - }); - - zoomButtonIn.setIcon(resourceMap.getIcon("zoomButtonIn.icon")); // NOI18N - zoomButtonIn.setText(resourceMap.getString("zoomButtonIn.text")); // NOI18N - zoomButtonIn.setName("zoomButtonIn"); // NOI18N - zoomButtonIn.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - zoomButtonInMouseClicked(evt); - } - }); - - zoomButtonOut.setIcon(resourceMap.getIcon("zoomButtonOut.icon")); // NOI18N - zoomButtonOut.setName("zoomButtonOut"); // NOI18N - zoomButtonOut.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - zoomButtonOutMouseClicked(evt); - } - }); - - javax.swing.GroupLayout mainMapLayout = new javax.swing.GroupLayout(mainMap); - mainMap.setLayout(mainMapLayout); - mainMapLayout.setHorizontalGroup( - mainMapLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainMapLayout.createSequentialGroup() - .addContainerGap() - .addGroup(mainMapLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(zoomButtonOut) - .addComponent(zoomButtonIn) - .addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 697, Short.MAX_VALUE) - .addComponent(miniMap, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - ); - mainMapLayout.setVerticalGroup( - mainMapLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(mainMapLayout.createSequentialGroup() - .addContainerGap(322, Short.MAX_VALUE) - .addGroup(mainMapLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainMapLayout.createSequentialGroup() - .addComponent(zoomButtonIn) - .addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 183, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(4, 4, 4) - .addComponent(zoomButtonOut) - .addGap(31, 31, 31)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainMapLayout.createSequentialGroup() - .addComponent(miniMap, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()))) - ); - - mapPanel.add(mainMap, "card2"); - - serviceD.setFont(resourceMap.getFont("goToDefaultPosition.font")); // NOI18N - serviceD.setText(resourceMap.getString("serviceD.text")); // NOI18N - serviceD.setName("serviceD"); // NOI18N - serviceD.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - serviceDActionPerformed(evt); - } - }); - - javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(freimapgsoc.FreimapGSoCApp.class).getContext().getActionMap(MainLayer.class, this); - goToDefaultPosition.setAction(actionMap.get("goToDefaultPosition")); // NOI18N - goToDefaultPosition.setFont(resourceMap.getFont("goToDefaultPosition.font")); // NOI18N - goToDefaultPosition.setText(resourceMap.getString("goToDefaultPosition.text")); // NOI18N - goToDefaultPosition.setName("goToDefaultPosition"); // NOI18N - - jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - jPanel1.setName("jPanel1"); // NOI18N - - jScrollPane1.setName("jScrollPane1"); // NOI18N - - locatedNodes.setFont(resourceMap.getFont("locatedNodes.font")); // NOI18N - locatedNodes.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); - locatedNodes.setName("locatedNodes"); // NOI18N - locatedNodes.addListSelectionListener(new javax.swing.event.ListSelectionListener() { - public void valueChanged(javax.swing.event.ListSelectionEvent evt) { - locatedNodesValueChanged(evt); - } - }); - jScrollPane1.setViewportView(locatedNodes); - - dateInfo.setFont(resourceMap.getFont("dateInfo.font")); // NOI18N - dateInfo.setIcon(resourceMap.getIcon("dateInfo.icon")); // NOI18N - dateInfo.setText(resourceMap.getString("dateInfo.text")); // NOI18N - dateInfo.setName("dateInfo"); // NOI18N - - yValue.setFont(resourceMap.getFont("latitudeValue.font")); // NOI18N - yValue.setMaximumSize(new java.awt.Dimension(88, 14)); - yValue.setMinimumSize(new java.awt.Dimension(88, 14)); - yValue.setName("yValue"); // NOI18N - - yPos.setFont(resourceMap.getFont("yPos.font")); // NOI18N - yPos.setText(resourceMap.getString("yPos.text")); // NOI18N - yPos.setName("yPos"); // NOI18N - - xPos.setFont(resourceMap.getFont("jLabel4.font")); // NOI18N - xPos.setText(resourceMap.getString("xPos.text")); // NOI18N - xPos.setName("xPos"); // NOI18N - - xValue.setFont(resourceMap.getFont("latitudeValue.font")); // NOI18N - xValue.setMaximumSize(new java.awt.Dimension(88, 14)); - xValue.setMinimumSize(new java.awt.Dimension(88, 14)); - xValue.setName("xValue"); // NOI18N - - latitudeValue.setFont(resourceMap.getFont("latitudeValue.font")); // NOI18N - latitudeValue.setText(resourceMap.getString("latitudeValue.text")); // NOI18N - latitudeValue.setMaximumSize(new java.awt.Dimension(88, 14)); - latitudeValue.setMinimumSize(new java.awt.Dimension(88, 14)); - latitudeValue.setName("latitudeValue"); // NOI18N - - longitudeValue.setFont(resourceMap.getFont("latitudeValue.font")); // NOI18N - longitudeValue.setText(resourceMap.getString("longitudeValue.text")); // NOI18N - longitudeValue.setMaximumSize(new java.awt.Dimension(88, 14)); - longitudeValue.setMinimumSize(new java.awt.Dimension(88, 14)); - longitudeValue.setName("longitudeValue"); // NOI18N - - Longitude.setFont(resourceMap.getFont("jLabel4.font")); // NOI18N - Longitude.setText(resourceMap.getString("Longitude.text")); // NOI18N - Longitude.setName("Longitude"); // NOI18N - - Latitude.setFont(resourceMap.getFont("jLabel4.font")); // NOI18N - Latitude.setText(resourceMap.getString("Latitude.text")); // NOI18N - Latitude.setName("Latitude"); // NOI18N - - jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, resourceMap.getString("jPanel2.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, resourceMap.getFont("jPanel2.border.titleFont"))); // NOI18N - jPanel2.setFont(resourceMap.getFont("jPanel2.font")); // NOI18N - jPanel2.setName("jPanel2"); // NOI18N - - jLabel5.setFont(resourceMap.getFont("jLabel8.font")); // NOI18N - jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel5.setText(resourceMap.getString("jLabel5.text")); // NOI18N - jLabel5.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - jLabel5.setName("jLabel5"); // NOI18N - - ipLabel.setFont(resourceMap.getFont("jLabel16.font")); // NOI18N - ipLabel.setText(resourceMap.getString("ipLabel.text")); // NOI18N - ipLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); - ipLabel.setName("ipLabel"); // NOI18N - - latLabel.setFont(resourceMap.getFont("jLabel16.font")); // NOI18N - latLabel.setText(resourceMap.getString("latLabel.text")); // NOI18N - latLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); - latLabel.setMaximumSize(null); - latLabel.setName("latLabel"); // NOI18N - latLabel.setPreferredSize(null); - - jLabel7.setFont(resourceMap.getFont("jLabel8.font")); // NOI18N - jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel7.setText(resourceMap.getString("jLabel7.text")); // NOI18N - jLabel7.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - jLabel7.setName("jLabel7"); // NOI18N - - jLabel11.setFont(resourceMap.getFont("jLabel11.font")); // NOI18N - jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel11.setText(resourceMap.getString("jLabel11.text")); // NOI18N - jLabel11.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - jLabel11.setName("jLabel11"); // NOI18N - - jLabel6.setFont(resourceMap.getFont("jLabel8.font")); // NOI18N - jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel6.setText(resourceMap.getString("jLabel6.text")); // NOI18N - jLabel6.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - jLabel6.setName("jLabel6"); // NOI18N - - fqidLabel.setFont(resourceMap.getFont("jLabel16.font")); // NOI18N - fqidLabel.setText(resourceMap.getString("fqidLabel.text")); // NOI18N - fqidLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); - fqidLabel.setName("fqidLabel"); // NOI18N - - locatedLabel.setFont(resourceMap.getFont("locatedLabel.font")); // NOI18N - locatedLabel.setText(resourceMap.getString("locatedLabel.text")); // NOI18N - locatedLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); - locatedLabel.setName("locatedLabel"); // NOI18N - - jLabel8.setFont(resourceMap.getFont("jLabel8.font")); // NOI18N - jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel8.setText(resourceMap.getString("jLabel8.text")); // NOI18N - jLabel8.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - jLabel8.setName("jLabel8"); // NOI18N - - jLabel10.setFont(resourceMap.getFont("jLabel11.font")); // NOI18N - jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); - jLabel10.setText(resourceMap.getString("jLabel10.text")); // NOI18N - jLabel10.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - jLabel10.setName("jLabel10"); // NOI18N - - ncLabel.setFont(resourceMap.getFont("jLabel16.font")); // NOI18N - ncLabel.setText(resourceMap.getString("ncLabel.text")); // NOI18N - ncLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); - ncLabel.setName("ncLabel"); // NOI18N - - lonLabel.setFont(resourceMap.getFont("jLabel16.font")); // NOI18N - lonLabel.setText(resourceMap.getString("lonLabel.text")); // NOI18N - lonLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); - lonLabel.setName("lonLabel"); // NOI18N - - javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); - jPanel2.setLayout(jPanel2Layout); - jPanel2Layout.setHorizontalGroup( - jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel10, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE) - .addComponent(jLabel8, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE) - .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE) - .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE) - .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE) - .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(locatedLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE) - .addComponent(lonLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE) - .addComponent(latLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE) - .addComponent(fqidLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE) - .addComponent(ncLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE) - .addComponent(ipLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 204, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) - ); - jPanel2Layout.setVerticalGroup( - jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(ipLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel5)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel7) - .addComponent(latLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel11) - .addComponent(lonLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel6) - .addComponent(fqidLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel8) - .addComponent(locatedLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel10) - .addComponent(ncLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) - ); - - jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, resourceMap.getString("jPanel3.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, resourceMap.getFont("jPanel3.border.titleFont"))); // NOI18N - jPanel3.setEnabled(false); - jPanel3.setName("jPanel3"); // NOI18N - - javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); - jPanel3.setLayout(jPanel3Layout); - jPanel3Layout.setHorizontalGroup( - jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 294, Short.MAX_VALUE) - ); - jPanel3Layout.setVerticalGroup( - jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 118, Short.MAX_VALUE) - ); - - jSeparator4.setName("jSeparator4"); // NOI18N - - jSeparator5.setName("jSeparator5"); // NOI18N - - addNodeButton.setIcon(resourceMap.getIcon("addNodeButton.icon")); // NOI18N - addNodeButton.setText(resourceMap.getString("addNodeButton.text")); // NOI18N - addNodeButton.setName("addNodeButton"); // NOI18N - addNodeButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - addNodeButtonActionPerformed(evt); - } - }); - - deleteNodeButton.setIcon(resourceMap.getIcon("deleteNodeButton.icon")); // NOI18N - deleteNodeButton.setText(resourceMap.getString("deleteNodeButton.text")); // NOI18N - deleteNodeButton.setEnabled(false); - deleteNodeButton.setName("deleteNodeButton"); // NOI18N - deleteNodeButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - deleteNodeButtonActionPerformed(evt); - } - }); - - javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addComponent(dateInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 233, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(Latitude, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(Longitude, javax.swing.GroupLayout.Alignment.TRAILING)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(latitudeValue, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(longitudeValue, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(xPos, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(yPos, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(yValue, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(xValue, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jSeparator4)) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() - .addGap(11, 11, 11) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(deleteNodeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(addNodeButton)) - .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE) - .addComponent(jSeparator5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 278, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))) - .addGap(20, 20, 20)) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(addNodeButton) - .addComponent(deleteNodeButton)) - .addGap(20, 20, 20) - .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(7, 7, 7) - .addComponent(jSeparator5, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(1, 1, 1) - .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(xPos) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(yPos)) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(xValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(yValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(latitudeValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(Latitude)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(longitudeValue, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(Longitude)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(dateInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - ); - - defaultButton.setFont(resourceMap.getFont("defaultButton.font")); // NOI18N - defaultButton.setText(resourceMap.getString("defaultButton.text")); // NOI18N - defaultButton.setName("defaultButton"); // NOI18N - defaultButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - defaultButtonActionPerformed(evt); - } - }); - - javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); - mainPanel.setLayout(mainPanelLayout); - mainPanelLayout.setHorizontalGroup( - mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(mainPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup(mainPanelLayout.createSequentialGroup() - .addComponent(defaultButton) - .addGap(16, 16, 16) - .addComponent(serviceD) - .addGap(18, 18, 18) - .addComponent(goToDefaultPosition)) - .addComponent(mapPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 903, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) - ); - mainPanelLayout.setVerticalGroup( - mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(mainPanelLayout.createSequentialGroup() - .addContainerGap() - .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(mainPanelLayout.createSequentialGroup() - .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup() - .addComponent(mapPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 604, Short.MAX_VALUE) - .addGap(18, 18, 18) - .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(goToDefaultPosition) - .addComponent(serviceD) - .addComponent(defaultButton)) - .addGap(237, 237, 237)))) - ); - - menuBar.setName("menuBar"); // NOI18N - - fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N - fileMenu.setFont(resourceMap.getFont("fileMenu.font")); // NOI18N - fileMenu.setName("fileMenu"); // NOI18N - - jMenu1.setIcon(resourceMap.getIcon("jMenu1.icon")); // NOI18N - jMenu1.setText(resourceMap.getString("jMenu1.text")); // NOI18N - jMenu1.setFont(resourceMap.getFont("jMenu1.font")); // NOI18N - jMenu1.setName("jMenu1"); // NOI18N - - xmlOpenMenu.setFont(resourceMap.getFont("xmlOpenMenu.font")); // NOI18N - xmlOpenMenu.setIcon(resourceMap.getIcon("xmlOpenMenu.icon")); // NOI18N - xmlOpenMenu.setText(resourceMap.getString("xmlOpenMenu.text")); // NOI18N - xmlOpenMenu.setName("xmlOpenMenu"); // NOI18N - xmlOpenMenu.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - xmlOpenMenuActionPerformed(evt); - } - }); - jMenu1.add(xmlOpenMenu); - - jsOpenMenu.setFont(resourceMap.getFont("jsOpenMenu.font")); // NOI18N - jsOpenMenu.setIcon(resourceMap.getIcon("jsOpenMenu.icon")); // NOI18N - jsOpenMenu.setText(resourceMap.getString("jsOpenMenu.text")); // NOI18N - jsOpenMenu.setName("jsOpenMenu"); // NOI18N - jsOpenMenu.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jsOpenMenuActionPerformed(evt); - } - }); - jMenu1.add(jsOpenMenu); - - fileMenu.add(jMenu1); - - AppendMenu.setIcon(resourceMap.getIcon("AppendMenu.icon")); // NOI18N - AppendMenu.setText(resourceMap.getString("AppendMenu.text")); // NOI18N - AppendMenu.setFont(resourceMap.getFont("AppendMenu.font")); // NOI18N - AppendMenu.setName("AppendMenu"); // NOI18N - - xmlAppendMenu.setFont(resourceMap.getFont("xmlAppendMenu.font")); // NOI18N - xmlAppendMenu.setIcon(resourceMap.getIcon("xmlAppendMenu.icon")); // NOI18N - xmlAppendMenu.setText(resourceMap.getString("xmlAppendMenu.text")); // NOI18N - xmlAppendMenu.setName("xmlAppendMenu"); // NOI18N - xmlAppendMenu.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - xmlAppendMenuActionPerformed(evt); - } - }); - AppendMenu.add(xmlAppendMenu); - - jsAppendMenu.setFont(resourceMap.getFont("jsAppendMenu.font")); // NOI18N - jsAppendMenu.setIcon(resourceMap.getIcon("jsAppendMenu.icon")); // NOI18N - jsAppendMenu.setText(resourceMap.getString("jsAppendMenu.text")); // NOI18N - jsAppendMenu.setName("jsAppendMenu"); // NOI18N - jsAppendMenu.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jsAppendMenuActionPerformed(evt); - } - }); - AppendMenu.add(jsAppendMenu); - - fileMenu.add(AppendMenu); - - saveAsMenu.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - saveAsMenu.setFont(resourceMap.getFont("saveAsMenu.font")); // NOI18N - saveAsMenu.setIcon(resourceMap.getIcon("saveAsMenu.icon")); // NOI18N - saveAsMenu.setText(resourceMap.getString("saveAsMenu.text")); // NOI18N - saveAsMenu.setName("saveAsMenu"); // NOI18N - saveAsMenu.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - saveAsMenuActionPerformed(evt); - } - }); - fileMenu.add(saveAsMenu); - - jSeparator12.setName("jSeparator12"); // NOI18N - fileMenu.add(jSeparator12); - - recentFilesMenu.setIcon(resourceMap.getIcon("recentFilesMenu.icon")); // NOI18N - recentFilesMenu.setText(resourceMap.getString("recentFilesMenu.text")); // NOI18N - recentFilesMenu.setEnabled(false); - recentFilesMenu.setFont(resourceMap.getFont("recentFilesMenu.font")); // NOI18N - recentFilesMenu.setName("recentFilesMenu"); // NOI18N - - jSeparator13.setName("jSeparator13"); // NOI18N - recentFilesMenu.add(jSeparator13); - - deleteRecentMenu.setFont(resourceMap.getFont("deleteRecentMenu.font")); // NOI18N - deleteRecentMenu.setIcon(resourceMap.getIcon("deleteRecentMenu.icon")); // NOI18N - deleteRecentMenu.setText(resourceMap.getString("deleteRecentMenu.text")); // NOI18N - deleteRecentMenu.setToolTipText(resourceMap.getString("deleteRecentMenu.toolTipText")); // NOI18N - deleteRecentMenu.setName("deleteRecentMenu"); // NOI18N - deleteRecentMenu.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - deleteRecentMenuActionPerformed(evt); - } - }); - recentFilesMenu.add(deleteRecentMenu); - - fileMenu.add(recentFilesMenu); - - jSeparator3.setName("jSeparator3"); // NOI18N - fileMenu.add(jSeparator3); - - exitMenuItem.setAction(actionMap.get("quit")); // NOI18N - exitMenuItem.setFont(resourceMap.getFont("exitMenuItem.font")); // NOI18N - exitMenuItem.setIcon(resourceMap.getIcon("exitMenuItem.icon")); // NOI18N - exitMenuItem.setName("exitMenuItem"); // NOI18N - fileMenu.add(exitMenuItem); - - menuBar.add(fileMenu); - - jMenu2.setText(resourceMap.getString("jMenu2.text")); // NOI18N - jMenu2.setFont(resourceMap.getFont("jMenu2.font")); // NOI18N - jMenu2.setName("jMenu2"); // NOI18N - - jSeparator1.setName("jSeparator1"); // NOI18N - jMenu2.add(jSeparator1); - - jMenuItem8.setAction(actionMap.get("goToDefaultPosition")); // NOI18N - jMenuItem8.setFont(resourceMap.getFont("jMenuItem5.font")); // NOI18N - jMenuItem8.setIcon(resourceMap.getIcon("jMenuItem8.icon")); // NOI18N - jMenuItem8.setText(resourceMap.getString("jMenuItem8.text")); // NOI18N - jMenuItem8.setName("jMenuItem8"); // NOI18N - jMenu2.add(jMenuItem8); - - jMenuItem6.setAction(actionMap.get("addNodeOnMap")); // NOI18N - jMenuItem6.setFont(resourceMap.getFont("jMenuItem5.font")); // NOI18N - jMenuItem6.setIcon(resourceMap.getIcon("jMenuItem6.icon")); // NOI18N - jMenuItem6.setText(resourceMap.getString("jMenuItem6.text")); // NOI18N - jMenuItem6.setName("jMenuItem6"); // NOI18N - jMenu2.add(jMenuItem6); - - jMenuItem5.setAction(actionMap.get("takeScreenShot")); // NOI18N - jMenuItem5.setFont(resourceMap.getFont("jMenuItem5.font")); // NOI18N - jMenuItem5.setIcon(resourceMap.getIcon("jMenuItem5.icon")); // NOI18N - jMenuItem5.setText(resourceMap.getString("jMenuItem5.text")); // NOI18N - jMenuItem5.setName("jMenuItem5"); // NOI18N - jMenu2.add(jMenuItem5); - - jSeparator2.setName("jSeparator2"); // NOI18N - jMenu2.add(jSeparator2); - - jMenuItem12.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - jMenuItem12.setFont(resourceMap.getFont("jMenuItem5.font")); // NOI18N - jMenuItem12.setIcon(resourceMap.getIcon("jMenuItem12.icon")); // NOI18N - jMenuItem12.setText(resourceMap.getString("jMenuItem12.text")); // NOI18N - jMenuItem12.setName("jMenuItem12"); // NOI18N - jMenu2.add(jMenuItem12); - - jMenuItem7.setAction(actionMap.get("findNode")); // NOI18N - jMenuItem7.setFont(resourceMap.getFont("jMenuItem5.font")); // NOI18N - jMenuItem7.setIcon(resourceMap.getIcon("jMenuItem7.icon")); // NOI18N - jMenuItem7.setText(resourceMap.getString("jMenuItem7.text")); // NOI18N - jMenuItem7.setName("jMenuItem7"); // NOI18N - jMenu2.add(jMenuItem7); - - jMenuItem9.setAction(actionMap.get("goHere")); // NOI18N - jMenuItem9.setFont(resourceMap.getFont("jMenuItem5.font")); // NOI18N - jMenuItem9.setIcon(resourceMap.getIcon("jMenuItem9.icon")); // NOI18N - jMenuItem9.setText(resourceMap.getString("jMenuItem9.text")); // NOI18N - jMenuItem9.setName("jMenuItem9"); // NOI18N - jMenu2.add(jMenuItem9); - - menuBar.add(jMenu2); - - viewMenu.setText(resourceMap.getString("viewMenu.text")); // NOI18N - viewMenu.setFont(resourceMap.getFont("viewMenu.font")); // NOI18N - viewMenu.setName("viewMenu"); // NOI18N - - mapNodesMenu.setAction(actionMap.get("showNodes")); // NOI18N - mapNodesMenu.setFont(resourceMap.getFont("mapNodesMenu.font")); // NOI18N - mapNodesMenu.setSelected(true); - mapNodesMenu.setText(resourceMap.getString("mapNodesMenu.text")); // NOI18N - mapNodesMenu.setIcon(resourceMap.getIcon("mapNodesMenu.icon")); // NOI18N - mapNodesMenu.setName("mapNodesMenu"); // NOI18N - viewMenu.add(mapNodesMenu); - - linksMenu.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_2, java.awt.event.InputEvent.CTRL_MASK)); - linksMenu.setFont(resourceMap.getFont("mapNodesMenu.font")); // NOI18N - linksMenu.setSelected(true); - linksMenu.setText(resourceMap.getString("linksMenu.text")); // NOI18N - linksMenu.setIcon(resourceMap.getIcon("linksMenu.icon")); // NOI18N - linksMenu.setName("linksMenu"); // NOI18N - viewMenu.add(linksMenu); - - latLonMenu.setAction(actionMap.get("showLatLon")); // NOI18N - latLonMenu.setFont(resourceMap.getFont("mapNodesMenu.font")); // NOI18N - latLonMenu.setSelected(true); - latLonMenu.setText(resourceMap.getString("latLonMenu.text")); // NOI18N - latLonMenu.setIcon(resourceMap.getIcon("latLonMenu.icon")); // NOI18N - latLonMenu.setName("latLonMenu"); // NOI18N - viewMenu.add(latLonMenu); - - jCheckBoxMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_4, java.awt.event.InputEvent.CTRL_MASK)); - jCheckBoxMenuItem1.setFont(resourceMap.getFont("mapNodesMenu.font")); // NOI18N - jCheckBoxMenuItem1.setSelected(true); - jCheckBoxMenuItem1.setText(resourceMap.getString("jCheckBoxMenuItem1.text")); // NOI18N - jCheckBoxMenuItem1.setIcon(resourceMap.getIcon("jCheckBoxMenuItem1.icon")); // NOI18N - jCheckBoxMenuItem1.setName("jCheckBoxMenuItem1"); // NOI18N - viewMenu.add(jCheckBoxMenuItem1); - - zoomButtons.setAction(actionMap.get("showZoomButton")); // NOI18N - zoomButtons.setFont(resourceMap.getFont("mapNodesMenu.font")); // NOI18N - zoomButtons.setSelected(true); - zoomButtons.setText(resourceMap.getString("zoomButtons.text")); // NOI18N - zoomButtons.setIcon(resourceMap.getIcon("zoomButtons.icon")); // NOI18N - zoomButtons.setName("zoomButtons"); // NOI18N - viewMenu.add(zoomButtons); - - zoomSMenu.setAction(actionMap.get("showSlider")); // NOI18N - zoomSMenu.setFont(resourceMap.getFont("mapNodesMenu.font")); // NOI18N - zoomSMenu.setSelected(true); - zoomSMenu.setText(resourceMap.getString("zoomSMenu.text")); // NOI18N - zoomSMenu.setIcon(resourceMap.getIcon("zoomSMenu.icon")); // NOI18N - zoomSMenu.setName("zoomSMenu"); // NOI18N - viewMenu.add(zoomSMenu); - - miniMapMenu.setAction(actionMap.get("showMiniMap")); // NOI18N - miniMapMenu.setFont(resourceMap.getFont("mapNodesMenu.font")); // NOI18N - miniMapMenu.setSelected(true); - miniMapMenu.setText(resourceMap.getString("miniMapMenu.text")); // NOI18N - miniMapMenu.setIcon(resourceMap.getIcon("miniMapMenu.icon")); // NOI18N - miniMapMenu.setName("miniMapMenu"); // NOI18N - viewMenu.add(miniMapMenu); - - menuBar.add(viewMenu); - - helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N - helpMenu.setFont(resourceMap.getFont("helpMenu.font")); // NOI18N - helpMenu.setName("helpMenu"); // NOI18N - - aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N - aboutMenuItem.setFont(resourceMap.getFont("jMenuItem1.font")); // NOI18N - aboutMenuItem.setIcon(resourceMap.getIcon("aboutMenuItem.icon")); // NOI18N - aboutMenuItem.setName("aboutMenuItem"); // NOI18N - helpMenu.add(aboutMenuItem); - - jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0)); - jMenuItem1.setFont(resourceMap.getFont("jMenuItem1.font")); // NOI18N - jMenuItem1.setIcon(resourceMap.getIcon("jMenuItem1.icon")); // NOI18N - jMenuItem1.setText(resourceMap.getString("jMenuItem1.text")); // NOI18N - jMenuItem1.setName("jMenuItem1"); // NOI18N - helpMenu.add(jMenuItem1); - - menuBar.add(helpMenu); - - contestMenu.setAutoscrolls(true); - contestMenu.setBorderPainted(false); - contestMenu.setMaximumSize(new java.awt.Dimension(200, 250)); - contestMenu.setMinimumSize(new java.awt.Dimension(200, 250)); - contestMenu.setName("ContestMenu"); // NOI18N - contestMenu.setOpaque(false); - contestMenu.setPreferredSize(new java.awt.Dimension(200, 250)); - contestMenu.setSelectionModel(null); - - takePicture.setAction(actionMap.get("takeScreenShot")); // NOI18N - takePicture.setFont(resourceMap.getFont("takePicture.font")); // NOI18N - takePicture.setIcon(resourceMap.getIcon("takePicture.icon")); // NOI18N - takePicture.setText(resourceMap.getString("takePicture.text")); // NOI18N - takePicture.setToolTipText(resourceMap.getString("takePicture.toolTipText")); // NOI18N - takePicture.setName("takePicture"); // NOI18N - contestMenu.add(takePicture); - - addNodeM.setAction(actionMap.get("addNodeOnMap")); // NOI18N - addNodeM.setFont(resourceMap.getFont("addNodeM.font")); // NOI18N - addNodeM.setIcon(resourceMap.getIcon("addNodeM.icon")); // NOI18N - addNodeM.setText(resourceMap.getString("addNodeM.text")); // NOI18N - addNodeM.setToolTipText(resourceMap.getString("addNodeM.toolTipText")); // NOI18N - addNodeM.setName("addNodeM"); // NOI18N - contestMenu.add(addNodeM); - - goToDefaultPos.setAction(actionMap.get("goToDefaultPosition")); // NOI18N - goToDefaultPos.setFont(resourceMap.getFont("goToDefaultPos.font")); // NOI18N - goToDefaultPos.setIcon(resourceMap.getIcon("goToDefaultPos.icon")); // NOI18N - goToDefaultPos.setText(resourceMap.getString("goToDefaultPos.text")); // NOI18N - goToDefaultPos.setName("goToDefaultPos"); // NOI18N - contestMenu.add(goToDefaultPos); - - jSeparator6.setName("jSeparator6"); // NOI18N - contestMenu.add(jSeparator6); - - File.setIcon(resourceMap.getIcon("File.icon")); // NOI18N - File.setText(resourceMap.getString("File.text")); // NOI18N - File.setFont(resourceMap.getFont("File.font")); // NOI18N - File.setName("File"); // NOI18N - - saveSelNodes.setFont(resourceMap.getFont("saveSelNodes.font")); // NOI18N - saveSelNodes.setIcon(resourceMap.getIcon("saveSelNodes.icon")); // NOI18N - saveSelNodes.setText(resourceMap.getString("saveSelNodes.text")); // NOI18N - saveSelNodes.setName("saveSelNodes"); // NOI18N - File.add(saveSelNodes); - - contestMenu.add(File); - - Edit.setIcon(resourceMap.getIcon("Edit.icon")); // NOI18N - Edit.setText(resourceMap.getString("Edit.text")); // NOI18N - Edit.setFont(resourceMap.getFont("Edit.font")); // NOI18N - Edit.setName("Edit"); // NOI18N - - applyFilter.setFont(resourceMap.getFont("findNode.font")); // NOI18N - applyFilter.setIcon(resourceMap.getIcon("applyFilter.icon")); // NOI18N - applyFilter.setText(resourceMap.getString("applyFilter.text")); // NOI18N - applyFilter.setName("applyFilter"); // NOI18N - Edit.add(applyFilter); - - findNode.setAction(actionMap.get("findNode")); // NOI18N - findNode.setFont(resourceMap.getFont("findNode.font")); // NOI18N - findNode.setIcon(resourceMap.getIcon("findNode.icon")); // NOI18N - findNode.setText(resourceMap.getString("findNode.text")); // NOI18N - findNode.setName("findNode"); // NOI18N - Edit.add(findNode); - - goHere.setAction(actionMap.get("goHere")); // NOI18N - goHere.setFont(resourceMap.getFont("findNode.font")); // NOI18N - goHere.setIcon(resourceMap.getIcon("goHere.icon")); // NOI18N - goHere.setText(resourceMap.getString("goHere.text")); // NOI18N - goHere.setName("goHere"); // NOI18N - Edit.add(goHere); - - contestMenu.add(Edit); - - View.setIcon(resourceMap.getIcon("View.icon")); // NOI18N - View.setText(resourceMap.getString("View.text")); // NOI18N - View.setFont(resourceMap.getFont("View.font")); // NOI18N - View.setName("View"); // NOI18N - - mapNodes.setFont(resourceMap.getFont("mapNodes.font")); // NOI18N - mapNodes.setIcon(resourceMap.getIcon("mapNodes.icon")); // NOI18N - mapNodes.setText(resourceMap.getString("mapNodes.text")); // NOI18N - mapNodes.setName("mapNodes"); // NOI18N - View.add(mapNodes); - - maplinks.setFont(resourceMap.getFont("maplinks.font")); // NOI18N - maplinks.setIcon(resourceMap.getIcon("maplinks.icon")); // NOI18N - maplinks.setText(resourceMap.getString("maplinks.text")); // NOI18N - maplinks.setName("maplinks"); // NOI18N - View.add(maplinks); - - maplatlon.setFont(resourceMap.getFont("maplatlon.font")); // NOI18N - maplatlon.setIcon(resourceMap.getIcon("maplatlon.icon")); // NOI18N - maplatlon.setText(resourceMap.getString("maplatlon.text")); // NOI18N - maplatlon.setName("maplatlon"); // NOI18N - View.add(maplatlon); - - listofnodes.setFont(resourceMap.getFont("listofnodes.font")); // NOI18N - listofnodes.setIcon(resourceMap.getIcon("listofnodes.icon")); // NOI18N - listofnodes.setText(resourceMap.getString("listofnodes.text")); // NOI18N - listofnodes.setName("listofnodes"); // NOI18N - View.add(listofnodes); - - zoomMapB.setAction(actionMap.get("showZoomButton")); // NOI18N - zoomMapB.setFont(resourceMap.getFont("zoomMapB.font")); // NOI18N - zoomMapB.setIcon(resourceMap.getIcon("zoomMapB.icon")); // NOI18N - zoomMapB.setText(resourceMap.getString("zoomMapB.text")); // NOI18N - zoomMapB.setName("zoomMapB"); // NOI18N - View.add(zoomMapB); - - zoomMapS.setAction(actionMap.get("showSlider")); // NOI18N - zoomMapS.setFont(resourceMap.getFont("zoomMapS.font")); // NOI18N - zoomMapS.setIcon(resourceMap.getIcon("zoomMapS.icon")); // NOI18N - zoomMapS.setText(resourceMap.getString("zoomMapS.text")); // NOI18N - zoomMapS.setName("zoomMapS"); // NOI18N - View.add(zoomMapS); - - miniMapM.setAction(actionMap.get("showMiniMap")); // NOI18N - miniMapM.setFont(resourceMap.getFont("miniMapM.font")); // NOI18N - miniMapM.setIcon(resourceMap.getIcon("miniMapM.icon")); // NOI18N - miniMapM.setText(resourceMap.getString("miniMapM.text")); // NOI18N - miniMapM.setName("miniMapM"); // NOI18N - View.add(miniMapM); - - contestMenu.add(View); - - jSeparator7.setName("jSeparator7"); // NOI18N - contestMenu.add(jSeparator7); - - selectAll.setFont(resourceMap.getFont("selectAll.font")); // NOI18N - selectAll.setIcon(resourceMap.getIcon("selectAll.icon")); // NOI18N - selectAll.setText(resourceMap.getString("selectAll.text")); // NOI18N - selectAll.setName("selectAll"); // NOI18N - contestMenu.add(selectAll); - - jSeparator8.setName("jSeparator8"); // NOI18N - contestMenu.add(jSeparator8); - - aboutfreimap.setFont(resourceMap.getFont("aboutfreimap.font")); // NOI18N - aboutfreimap.setIcon(resourceMap.getIcon("aboutfreimap.icon")); // NOI18N - aboutfreimap.setText(resourceMap.getString("aboutfreimap.text")); // NOI18N - aboutfreimap.setName("aboutfreimap"); // NOI18N - contestMenu.add(aboutfreimap); - - contestMenuNode.setMaximumSize(new java.awt.Dimension(200, 250)); - contestMenuNode.setMinimumSize(new java.awt.Dimension(200, 250)); - contestMenuNode.setName("contestMenuNode"); // NOI18N - contestMenuNode.setPreferredSize(new java.awt.Dimension(200, 250)); - contestMenuNode.setSelectionModel(null); - - addNodeDS.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - addNodeDS.setIcon(resourceMap.getIcon("addNodeDS.icon")); // NOI18N - addNodeDS.setText(resourceMap.getString("addNodeDS.text")); // NOI18N - addNodeDS.setToolTipText(resourceMap.getString("addNodeDS.toolTipText")); // NOI18N - addNodeDS.setName("addNodeDS"); // NOI18N - contestMenuNode.add(addNodeDS); - - centerMap.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - centerMap.setIcon(resourceMap.getIcon("centerMap.icon")); // NOI18N - centerMap.setText(resourceMap.getString("centerMap.text")); // NOI18N - centerMap.setToolTipText(resourceMap.getString("centerMap.toolTipText")); // NOI18N - centerMap.setName("centerMap"); // NOI18N - contestMenuNode.add(centerMap); - - serviceDiscovery.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - serviceDiscovery.setIcon(resourceMap.getIcon("serviceDiscovery.icon")); // NOI18N - serviceDiscovery.setText(resourceMap.getString("serviceDiscovery.text")); // NOI18N - serviceDiscovery.setToolTipText(resourceMap.getString("serviceDiscovery.toolTipText")); // NOI18N - serviceDiscovery.setName("serviceDiscovery"); // NOI18N - contestMenuNode.add(serviceDiscovery); - - ssh.setFont(resourceMap.getFont("ssh.font")); // NOI18N - ssh.setIcon(resourceMap.getIcon("ssh.icon")); // NOI18N - ssh.setText(resourceMap.getString("ssh.text")); // NOI18N - ssh.setToolTipText(resourceMap.getString("ssh.toolTipText")); // NOI18N - ssh.setName("ssh"); // NOI18N - contestMenuNode.add(ssh); - - jSeparator9.setName("jSeparator9"); // NOI18N - contestMenuNode.add(jSeparator9); - - File1.setIcon(resourceMap.getIcon("File1.icon")); // NOI18N - File1.setText(resourceMap.getString("File1.text")); // NOI18N - File1.setFont(resourceMap.getFont("Edit1.font")); // NOI18N - File1.setName("File1"); // NOI18N - - saveSelNodes1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - saveSelNodes1.setIcon(resourceMap.getIcon("saveSelNodes1.icon")); // NOI18N - saveSelNodes1.setText(resourceMap.getString("saveSelNodes1.text")); // NOI18N - saveSelNodes1.setName("saveSelNodes1"); // NOI18N - File1.add(saveSelNodes1); - - contestMenuNode.add(File1); - - Edit1.setIcon(resourceMap.getIcon("Edit1.icon")); // NOI18N - Edit1.setText(resourceMap.getString("Edit1.text")); // NOI18N - Edit1.setFont(resourceMap.getFont("Edit1.font")); // NOI18N - Edit1.setName("Edit1"); // NOI18N - - applyFilter1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - applyFilter1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/freimapgsoc/resources/filter.png"))); // NOI18N - applyFilter1.setText(resourceMap.getString("applyFilter1.text")); // NOI18N - applyFilter1.setName("applyFilter1"); // NOI18N - Edit1.add(applyFilter1); - - findNode1.setAction(actionMap.get("findNode")); // NOI18N - findNode1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - findNode1.setText(resourceMap.getString("findNode1.text")); // NOI18N - findNode1.setName("findNode1"); // NOI18N - Edit1.add(findNode1); - - goHere1.setAction(actionMap.get("goHere")); // NOI18N - goHere1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - goHere1.setText(resourceMap.getString("goHere1.text")); // NOI18N - goHere1.setName("goHere1"); // NOI18N - Edit1.add(goHere1); - - contestMenuNode.add(Edit1); - - View1.setIcon(resourceMap.getIcon("View1.icon")); // NOI18N - View1.setText(resourceMap.getString("View1.text")); // NOI18N - View1.setFont(resourceMap.getFont("Edit1.font")); // NOI18N - View1.setName("View1"); // NOI18N - - mapNodes1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - mapNodes1.setIcon(resourceMap.getIcon("mapNodes1.icon")); // NOI18N - mapNodes1.setText(resourceMap.getString("mapNodes1.text")); // NOI18N - mapNodes1.setName("mapNodes1"); // NOI18N - View1.add(mapNodes1); - - maplinks1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - maplinks1.setIcon(resourceMap.getIcon("maplinks1.icon")); // NOI18N - maplinks1.setText(resourceMap.getString("maplinks1.text")); // NOI18N - maplinks1.setName("maplinks1"); // NOI18N - View1.add(maplinks1); - - maplatlon1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - maplatlon1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/freimapgsoc/resources/latlon.png"))); // NOI18N - maplatlon1.setText(resourceMap.getString("maplatlon1.text")); // NOI18N - maplatlon1.setName("maplatlon1"); // NOI18N - View1.add(maplatlon1); - - listofnodes1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - listofnodes1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/freimapgsoc/resources/wrt.png"))); // NOI18N - listofnodes1.setText(resourceMap.getString("listofnodes1.text")); // NOI18N - listofnodes1.setName("listofnodes1"); // NOI18N - View1.add(listofnodes1); - - zoomMapB1.setAction(actionMap.get("showZoomButton")); // NOI18N - zoomMapB1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - zoomMapB1.setText(resourceMap.getString("zoomMapB1.text")); // NOI18N - zoomMapB1.setName("zoomMapB1"); // NOI18N - View1.add(zoomMapB1); - - zoomMapS1.setAction(actionMap.get("showSlider")); // NOI18N - zoomMapS1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - zoomMapS1.setText(resourceMap.getString("zoomMapS1.text")); // NOI18N - zoomMapS1.setName("zoomMapS1"); // NOI18N - View1.add(zoomMapS1); - - miniMapM1.setAction(actionMap.get("showMiniMap")); // NOI18N - miniMapM1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - miniMapM1.setText(resourceMap.getString("miniMapM1.text")); // NOI18N - miniMapM1.setName("miniMapM1"); // NOI18N - View1.add(miniMapM1); - - contestMenuNode.add(View1); - - jSeparator10.setName("jSeparator10"); // NOI18N - contestMenuNode.add(jSeparator10); - - selectThisNode.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - selectThisNode.setIcon(resourceMap.getIcon("selectThisNode.icon")); // NOI18N - selectThisNode.setText(resourceMap.getString("selectThisNode.text")); // NOI18N - selectThisNode.setToolTipText(resourceMap.getString("selectThisNode.toolTipText")); // NOI18N - selectThisNode.setName("selectThisNode"); // NOI18N - contestMenuNode.add(selectThisNode); - - selectAll1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - selectAll1.setIcon(resourceMap.getIcon("selectAll1.icon")); // NOI18N - selectAll1.setText(resourceMap.getString("selectAll1.text")); // NOI18N - selectAll1.setToolTipText(resourceMap.getString("selectAll1.toolTipText")); // NOI18N - selectAll1.setName("selectAll1"); // NOI18N - contestMenuNode.add(selectAll1); - - jSeparator11.setName("jSeparator11"); // NOI18N - contestMenuNode.add(jSeparator11); - - aboutfreimap1.setFont(resourceMap.getFont("selectAll1.font")); // NOI18N - aboutfreimap1.setIcon(resourceMap.getIcon("aboutfreimap1.icon")); // NOI18N - aboutfreimap1.setText(resourceMap.getString("aboutfreimap1.text")); // NOI18N - aboutfreimap1.setName("aboutfreimap1"); // NOI18N - contestMenuNode.add(aboutfreimap1); - - setComponent(mainPanel); - setMenuBar(menuBar); - }// //GEN-END:initComponents - - private void serviceDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serviceDActionPerformed - InetAddress intf = null; - try { - intf = InetAddress.getByName("10.0.1.29"); - try { - new PopUp(JmDNS.create(intf)).setVisible(true); - } catch (IOException ex) { - Logger.getLogger(MainLayer.class.getName()).log(Level.SEVERE, null, ex); - } - } catch (UnknownHostException ex) { - Logger.getLogger(PopUpMain.class.getName()).log(Level.SEVERE, null, ex); - } // TODO add your handling code here: - }//GEN-LAST:event_serviceDActionPerformed - - private void zoomSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_zoomSliderStateChanged - if (!zoomChanging) { - mainMap.setZoom(zoomSlider.getValue()); - drawAll(links, nodes); - } // TODO add your handling code here: - }//GEN-LAST:event_zoomSliderStateChanged - - private void deleteAllfromMap(JXMapViewer map, DefaultListModel locatedN) { - locatedN.removeAllElements(); - Set remover = painter.getWaypoints(); - remover.clear(); - map.setOverlayPainter(painter); - } - - public boolean verifyRecentFile() { - String recentPath = "/Users/stefanopilla/Desktop/FreimapGSoC/src/Data/.recentMenu"; - recentFile = new File(recentPath); - if (recentFile.exists()) { - return true; - } else { - return false; - } - } - - private void newRecentFileActionPerformed(java.awt.event.ActionEvent evt, String path) { - deleteAllfromMap(mainMap, locatedN); - File file = new File(path); - String extension = Utils.getExtension(file); - if (extension.equals(Utils.xml)) { -// new Layer(new xmlDataSource().init(null)); - } - if (extension.equals(Utils.js)) { - new Layer(new LatLonJsDataSource().init(file.getPath())); - } - } - - private void xmlOpenMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_xmlOpenMenuActionPerformed - if (evt.getSource() == xmlOpenMenu) { - JFileChooser fcxml = new JFileChooser(); - fcxml.addChoosableFileFilter(new xmlFileFilter()); - fcxml.setAcceptAllFileFilterUsed(false); - int returnVal = fcxml.showOpenDialog(fcxml); - if (returnVal == JFileChooser.APPROVE_OPTION) { - deleteAllfromMap(mainMap, locatedN); - File file = fcxml.getSelectedFile(); - //new Layer(new xmlDataSource().init(null)); - FileMenu fm = new FileMenu(); - fm.addRecentFile(file.getPath(), file.getName()); - } else if (returnVal == JFileChooser.CANCEL_OPTION) { - System.out.println("Open command cancelled by user." + "\n"); - } - - } - - }//GEN-LAST:event_xmlOpenMenuActionPerformed - - /** DELETED BECUASE IS SIMILAR TO XML FILES*/ - private void jsOpenMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jsOpenMenuActionPerformed - if (evt.getSource() == jsOpenMenu) { - JFileChooser fcjs = new JFileChooser(); - fcjs.addChoosableFileFilter(new jsFileFilter()); - fcjs.setAcceptAllFileFilterUsed(false); - int returnVal = fcjs.showOpenDialog(fcjs); - if (returnVal == JFileChooser.APPROVE_OPTION) { - deleteAllfromMap(mainMap, locatedN); - - File file = fcjs.getSelectedFile(); - System.out.println("FILE JS OPENED"); - System.out.println("Opening: " + file.getName() + ".\n"); - new Layer(new LatLonJsDataSource().init(file.getPath())); - FileMenu fm=new FileMenu(); - fm.addRecentFile(file.getPath(), file.getName()); - } else if (returnVal == JFileChooser.CANCEL_OPTION) { - System.out.println("Open command cancelled by user." + "\n"); - } - - } - }//GEN-LAST:event_jsOpenMenuActionPerformed - - private void saveAsMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAsMenuActionPerformed - if (evt.getSource() == saveAsMenu) { - JFileChooser fcsave = new JFileChooser(); - fcsave.addChoosableFileFilter(new saveFileFilter()); - fcsave.setAcceptAllFileFilterUsed(false); - - int returnVal = fcsave.showSaveDialog(fcsave); - //Handle open button action. - - if (returnVal == JFileChooser.APPROVE_OPTION) { - File file = fcsave.getSelectedFile(); - System.out.println("FILE SAVED CORRECT!"); - //Create a File With all Links and Nodes Data - System.out.println("Saved: " + file.getName() + ".\n"); - } else { - System.out.println("Save command cancelled by user." + "\n"); - } - - } - }//GEN-LAST:event_saveAsMenuActionPerformed - - private void zoomButtonInMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_zoomButtonInMouseClicked - setZoom(mainMap.getZoom() - 1); -// TODO add your handling code here: - }//GEN-LAST:event_zoomButtonInMouseClicked - - private void zoomButtonOutMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_zoomButtonOutMouseClicked - setZoom(mainMap.getZoom() + 1); - // TODO add your handling code here: - }//GEN-LAST:event_zoomButtonOutMouseClicked - - private void locatedNodesValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_locatedNodesValueChanged - try { - String selectedNode = locatedNodes.getSelectedValue().toString(); - for (int i = 0; i < - nodes.size(); i++) { - if (nodes.elementAt(i).equals(selectedNode)) { - new PopUp(nodes.elementAt(i)).setVisible(true); - } - } - } catch (Exception e) { - log.append("Exeption:" + e.getMessage() + " caused by: " + e.getCause() + "was occured in class: " + e.getClass()); - } - }//GEN-LAST:event_locatedNodesValueChanged - - private void addNodeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addNodeButtonActionPerformed - new addNode(locatedN, nodes).setVisible(true); - }//GEN-LAST:event_addNodeButtonActionPerformed - - private void deleteNodeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteNodeButtonActionPerformed - try { - int i = locatedNodes.getSelectedIndex(); - System.out.println("Index: " + locatedNodes.getSelectedIndex()); - System.out.println("Removed Element: " + locatedN.elementAt(i)); - for (int j = 0; j < nodes.size(); j++) { - if (nodes.elementAt(i).equals(locatedNodes.getSelectedValue())) { - System.out.println(locatedNodes.getSelectedValue().toString()); - drawNodes(nodes, nodes.elementAt(i).lat, nodes.elementAt(i).lon); - nodes.remove(j); - locatedN.remove(i); - System.out.println("removed!"); - } - - } - - } catch (Exception e) { - log.append("Exeption:" + e.getMessage() + " caused by: " + e.getCause() + "was occured in class: " + e.getClass()); - } - }//GEN-LAST:event_deleteNodeButtonActionPerformed - - private void mainMapMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mainMapMouseMoved - - GeoPosition gp = mainMap.convertPointToGeoPosition(new Point2D.Double(evt.getX(), evt.getY())); - DecimalFormat fmt = new DecimalFormat("#00.00000"); - latitudeValue.setText(fmt.format(gp.getLatitude())); - longitudeValue.setText(fmt.format(gp.getLongitude())); - xValue.setText(String.format("%.3f", mainMap.getTileFactory().geoToPixel(gp, mainMap.getZoom()).getX())); - yValue.setText(String.format("%.3f", mainMap.getTileFactory().geoToPixel(gp, mainMap.getZoom()).getY())); - - }//GEN-LAST:event_mainMapMouseMoved - - private void xmlAppendMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_xmlAppendMenuActionPerformed - if (evt.getSource() == xmlAppendMenu) { - JFileChooser fcxml = new JFileChooser(); - fcxml.addChoosableFileFilter(new xmlFileFilter()); - fcxml.setAcceptAllFileFilterUsed(false); - int returnVal = fcxml.showOpenDialog(fcxml); - if (returnVal == JFileChooser.APPROVE_OPTION) { - File file = fcxml.getSelectedFile(); - System.out.println("FILE XML OPENED!"); - //new Layer(new xmlDataSource().init(file.getPath())); - FileMenu fm = new FileMenu(); - fm.addRecentFile(file.getPath(), file.getName()); - System.out.println("Opening: " + file.getName() + ".\n"); - } else if (returnVal == JFileChooser.CANCEL_OPTION) { - System.out.println("Open command cancelled by user." + "\n"); - } - - } // TODO add your handling code here: - }//GEN-LAST:event_xmlAppendMenuActionPerformed - - /**DELETED BECAUSE IS SIMILAR TO XML FILE*/ - private void jsAppendMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jsAppendMenuActionPerformed - if (evt.getSource() == jsAppendMenu) { - JFileChooser fcjs = new JFileChooser(); - fcjs.addChoosableFileFilter(new jsFileFilter()); - fcjs.setAcceptAllFileFilterUsed(false); - int returnVal = fcjs.showOpenDialog(fcjs); - if (returnVal == JFileChooser.APPROVE_OPTION) { - File file = fcjs.getSelectedFile(); - System.out.println("FILE JS OPENED"); - //OPEN A FILE AND RELOAD ALL DATA ON THE MAP! - System.out.println("Opening: " + file.getName() + ".\n"); - new Layer(new LatLonJsDataSource().init(file.getPath())); - FileMenu fm = new FileMenu(); - fm.addRecentFile(file.getPath(), file.getName()); - } else if (returnVal == JFileChooser.CANCEL_OPTION) { - System.out.println("Open command cancelled by user." + "\n"); - } - - } - }//GEN-LAST:event_jsAppendMenuActionPerformed - - private void deleteRecentMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteRecentMenuActionPerformed - int i = 0; - while (i < recentFilesMenu.getItemCount() - 2) { - recentFilesMenu.remove(i); - i = i + 1; - } - recentFile.delete(); - recentFilesMenu.setEnabled(false); - }//GEN-LAST:event_deleteRecentMenuActionPerformed - - private void defaultButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_defaultButtonActionPerformed - setTileFactory(tf); // TODO add your handling code here: - }//GEN-LAST:event_defaultButtonActionPerformed - - - - public void init(HashMap configuration) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public Vector getNodeList() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public Hashtable getNodeAvailability(long time) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public long getFirstUpdateTime() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public long getLastUpdateTime() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public long getLastAvailableTime() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public long getFirstAvailableTime() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public long getClosestUpdateTime(long time) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public MapNode getNodeByName(String id) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public Vector getLinks(long time) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void addDataSourceListener(DataSourceListener dsl) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void getLinkProfile(Link link, LinkInfo info) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void getLinkCountProfile(MapNode node, NodeInfo info) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void init(String path) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public void addNodeOnMap() { - //OPEN A DIALOG Where ask lat/lon and eventually icon for the new node! - } - - public void findNode() { - new FindNode().setVisible(true); - } - - public void goHere() { - new goHere(mainMap).setVisible(true); - } - - public void showNodes() { - //Hide All nodes on the map - } - - public void showLatLon() { - if (latLonMenu.isSelected()) { - latitudeValue.setVisible(false); - longitudeValue.setVisible(false); - } else { - latitudeValue.setVisible(true); - longitudeValue.setVisible(true); - } - - } - - public void showZoomButton() { - if (zoomButtonIn.isVisible()) { - zoomButtonIn.setVisible(false); - zoomButtonOut.setVisible(false); - } else { - zoomButtonIn.setVisible(true); - zoomButtonOut.setVisible(true); - } - - } - - public void showSlider() { - if (zoomSMenu.isSelected()) { - setZoomSliderVisible(true); - } else { - setZoomSliderVisible(false); - } - - } - - @Action - public void showMiniMap() { - if (miniMap.isVisible()) { - miniMap.setVisible(false); - mapPanel.validate(); - } else { - miniMap.setVisible(true); - } - - } - // Variables declaration - do not modify//GEN-BEGIN:variables - public javax.swing.JMenu AppendMenu; - public javax.swing.JMenu Edit; - public javax.swing.JMenu Edit1; - public javax.swing.JMenu File; - public javax.swing.JMenu File1; - public javax.swing.JLabel Latitude; - public javax.swing.JLabel Longitude; - public javax.swing.JMenu View; - public javax.swing.JMenu View1; - public javax.swing.JMenuItem aboutfreimap; - public javax.swing.JMenuItem aboutfreimap1; - public javax.swing.JButton addNodeButton; - public javax.swing.JMenuItem addNodeDS; - public javax.swing.JMenuItem addNodeM; - public javax.swing.JMenuItem applyFilter; - public javax.swing.JMenuItem applyFilter1; - public javax.swing.JMenuItem centerMap; - public javax.swing.JPopupMenu contestMenu; - public javax.swing.JPopupMenu contestMenuNode; - public javax.swing.JLabel dateInfo; - public javax.swing.JButton defaultButton; - public javax.swing.JButton deleteNodeButton; - public javax.swing.JMenuItem deleteRecentMenu; - public javax.swing.JMenu fileMenu; - public javax.swing.JMenuItem findNode; - public javax.swing.JMenuItem findNode1; - public javax.swing.JLabel fqidLabel; - public javax.swing.JMenuItem goHere; - public javax.swing.JMenuItem goHere1; - public javax.swing.JMenuItem goToDefaultPos; - public javax.swing.JButton goToDefaultPosition; - public javax.swing.JLabel ipLabel; - public javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1; - public javax.swing.JLabel jLabel10; - public javax.swing.JLabel jLabel11; - public javax.swing.JLabel jLabel5; - public javax.swing.JLabel jLabel6; - public javax.swing.JLabel jLabel7; - public javax.swing.JLabel jLabel8; - public javax.swing.JMenu jMenu1; - public javax.swing.JMenu jMenu2; - public javax.swing.JMenuItem jMenuItem1; - public javax.swing.JMenuItem jMenuItem12; - public javax.swing.JMenuItem jMenuItem5; - public javax.swing.JMenuItem jMenuItem6; - public javax.swing.JMenuItem jMenuItem7; - public javax.swing.JMenuItem jMenuItem8; - public javax.swing.JMenuItem jMenuItem9; - public javax.swing.JPanel jPanel1; - public javax.swing.JPanel jPanel2; - public javax.swing.JPanel jPanel3; - public javax.swing.JScrollPane jScrollPane1; - public javax.swing.JSeparator jSeparator1; - public javax.swing.JSeparator jSeparator10; - public javax.swing.JSeparator jSeparator11; - public javax.swing.JSeparator jSeparator12; - public javax.swing.JSeparator jSeparator13; - public javax.swing.JSeparator jSeparator2; - public javax.swing.JSeparator jSeparator3; - public javax.swing.JSeparator jSeparator4; - public javax.swing.JSeparator jSeparator5; - public javax.swing.JSeparator jSeparator6; - public javax.swing.JSeparator jSeparator7; - public javax.swing.JSeparator jSeparator8; - public javax.swing.JSeparator jSeparator9; - public javax.swing.JMenuItem jsAppendMenu; - public javax.swing.JMenuItem jsOpenMenu; - public javax.swing.JLabel latLabel; - public javax.swing.JCheckBoxMenuItem latLonMenu; - public javax.swing.JLabel latitudeValue; - public javax.swing.JCheckBoxMenuItem linksMenu; - public javax.swing.JMenuItem listofnodes; - public javax.swing.JMenuItem listofnodes1; - public javax.swing.JLabel locatedLabel; - public javax.swing.JList locatedNodes; - public javax.swing.JLabel lonLabel; - public javax.swing.JLabel longitudeValue; - public static org.jdesktop.swingx.JXMapViewer mainMap; - public javax.swing.JPanel mainPanel; - public javax.swing.JMenuItem mapNodes; - public javax.swing.JMenuItem mapNodes1; - public javax.swing.JCheckBoxMenuItem mapNodesMenu; - public javax.swing.JPanel mapPanel; - public javax.swing.JMenuItem maplatlon; - public javax.swing.JMenuItem maplatlon1; - public javax.swing.JMenuItem maplinks; - public javax.swing.JMenuItem maplinks1; - public javax.swing.JMenuBar menuBar; - public static org.jdesktop.swingx.JXMapViewer miniMap; - public javax.swing.JMenuItem miniMapM; - public javax.swing.JMenuItem miniMapM1; - public javax.swing.JCheckBoxMenuItem miniMapMenu; - public javax.swing.JLabel ncLabel; - public javax.swing.JMenu recentFilesMenu; - public javax.swing.JMenuItem saveAsMenu; - public javax.swing.JMenuItem saveSelNodes; - public javax.swing.JMenuItem saveSelNodes1; - public javax.swing.JMenuItem selectAll; - public javax.swing.JMenuItem selectAll1; - public javax.swing.JMenuItem selectThisNode; - public javax.swing.JButton serviceD; - public javax.swing.JMenuItem serviceDiscovery; - public javax.swing.JMenuItem ssh; - public javax.swing.JMenuItem takePicture; - public javax.swing.JMenu viewMenu; - public javax.swing.JLabel xPos; - public javax.swing.JLabel xValue; - public javax.swing.JMenuItem xmlAppendMenu; - public javax.swing.JMenuItem xmlOpenMenu; - public javax.swing.JLabel yPos; - public javax.swing.JLabel yValue; - public javax.swing.JLabel zoomButtonIn; - public javax.swing.JLabel zoomButtonOut; - public javax.swing.JCheckBoxMenuItem zoomButtons; - public javax.swing.JMenuItem zoomMapB; - public javax.swing.JMenuItem zoomMapB1; - public javax.swing.JMenuItem zoomMapS; - public javax.swing.JMenuItem zoomMapS1; - public javax.swing.JCheckBoxMenuItem zoomSMenu; - public javax.swing.JSlider zoomSlider; - // End of variables declaration//GEN-END:variables - private JDialog aboutBox; - - private Runtime runtime; - - public DefaultListModel locatedN = new DefaultListModel(); - private int countPop = 0; - private String nodeName = null; - private File recentFile; - private String recentFilePath; - - public MapNode getNodeById(String id) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public Vector getLinksFromSource(String id) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public Vector getLinksFromDest(String id) { - throw new UnsupportedOperationException("Not supported yet."); - } -} diff --git a/src/freimapgsoc/MysqlDataSource.java b/src/freimapgsoc/MysqlDataSource.java index 000ac1f..4aa7ff5 100755 --- a/src/freimapgsoc/MysqlDataSource.java +++ b/src/freimapgsoc/MysqlDataSource.java @@ -89,7 +89,7 @@ public void init(HashMap conf) { private void updateNodeList() throws SQLException{ if ((nodeSource == null) && (sNodeSource != null)) { - nodeSource=MainLayer.sources.get(sNodeSource); + // nodeSource=MainLayer.get(sNodeSource); if (nodeSource==null) System.err.println("Could not identify NodeSource in MysqlDataSource."); sNodeSource = null; } @@ -294,6 +294,31 @@ public Vector getLinksFromDest(String id) { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public MapNode getNodeByIp(String ip) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void init() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap read_conf(HashMap configuration) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getId() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getCurrentID() { + throw new UnsupportedOperationException("Not supported yet."); + } + class LCPFetcher extends Thread { MapNode node; NodeInfo nodeinfo; diff --git a/src/freimapgsoc/OlsrdDataSource.java b/src/freimapgsoc/OlsrdDataSource.java index 1c9567a..cbbfb15 100755 --- a/src/freimapgsoc/OlsrdDataSource.java +++ b/src/freimapgsoc/OlsrdDataSource.java @@ -83,7 +83,7 @@ public void init(HashMap conf) { public Vector getNodeList() { if ((nodeSource == null) && (sNodeSource != null)) { System.out.println("nodeSource in OlsrdDataSource.java:"+ nodeSource); - nodeSource=MainLayer.sources.get(sNodeSource); + //nodeSource=.get(sNodeSource); sNodeSource = null; } @@ -94,7 +94,7 @@ public Vector getNodeList() { } for (int i=0;i getNodeList() { Vector nodes = (Vector)ois.readObject(); ois.close(); for (int i=0;i getLinksFromDest(String id) { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public MapNode getNodeByIp(String ip) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void init() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap read_conf(HashMap configuration) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getId() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getCurrentID() { + throw new UnsupportedOperationException("Not supported yet."); + } + //Listener Of DotDraw Plugin class DotPluginListener extends Thread { diff --git a/src/freimapgsoc/Start.java b/src/freimapgsoc/Start.java index 37ffebc..946a00c 100644 --- a/src/freimapgsoc/Start.java +++ b/src/freimapgsoc/Start.java @@ -177,7 +177,7 @@ private void openFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GE // new Layer(new xmlDataSource().init(null)); } if (extension.equals(Utils.js)){ - new Layer(new LatLonJsDataSource().init(file.getPath())); + new Layer(new LatLonJsDataSource().init("file://"+file.getPath())); } // FileMenu fm=new FileMenu(); //fm.addRecentFile(file.getPath(), file.getName()); diff --git a/src/freimapgsoc/YamlDataSource.java b/src/freimapgsoc/YamlDataSource.java index 916184f..34895c8 100755 --- a/src/freimapgsoc/YamlDataSource.java +++ b/src/freimapgsoc/YamlDataSource.java @@ -320,6 +320,31 @@ public Vector getLinksFromSource(String id) { public Vector getLinksFromDest(String id) { throw new UnsupportedOperationException("Not supported yet."); } + + @Override + public MapNode getNodeByIp(String ip) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void init() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap read_conf(HashMap configuration) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getId() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getCurrentID() { + throw new UnsupportedOperationException("Not supported yet."); + } class TimeStampFetcher implements Runnable { //use an own connection for concurrency! private final static int OFFSET = 1000; diff --git a/src/freimapgsoc/xmlDataSource.java b/src/freimapgsoc/xmlDataSource.java index 77d0e04..43a7d4d 100644 --- a/src/freimapgsoc/xmlDataSource.java +++ b/src/freimapgsoc/xmlDataSource.java @@ -235,5 +235,30 @@ public Vector getLinksFromDest(String id) { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public MapNode getNodeByIp(String ip) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public void init() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public HashMap read_conf(HashMap configuration) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getId() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public String getCurrentID() { + throw new UnsupportedOperationException("Not supported yet."); + } + } diff --git a/src/FileMngmt/FileMenu.java b/test/freimapgsoc/FileMenu.java similarity index 77% rename from src/FileMngmt/FileMenu.java rename to test/freimapgsoc/FileMenu.java index e89842a..fabcd43 100644 --- a/src/FileMngmt/FileMenu.java +++ b/test/freimapgsoc/FileMenu.java @@ -5,6 +5,9 @@ package FileMngmt; +import java.io.BufferedReader; +import java.io.FileReader; +import javax.swing.JMenu; import javax.swing.JMenuItem; /** @@ -12,15 +15,14 @@ * @author stefanopilla */ public class FileMenu { - public FileMenu(){ - + public FileMenu(String path){ + addRecentFile(String path); } - public void addRecentFile() { - freimapgsoc.MainLayer.recentMenuItem = null; + + public void addRecentFile(String path) { if (verifyRecentFile()) { - recentFilesMenu.setEnabled(true); - String path = recentFile.getPath(); + recentMenuItem.setEnabled(true); try { FileReader fr = new FileReader(path); BufferedReader reader = new BufferedReader(fr); @@ -29,14 +31,14 @@ public void addRecentFile() { while ((line = reader.readLine()) != null) { final String[] result = line.split(","); for (i = 0; i < result.length; i = i + 2) { - recentMenuItem = new JMenuItem(result[i]); - recentMenuItem.setToolTipText(result[i + 1]); - recentFilesMenu.add(recentMenuItem, i); - recentFilePath = result[i + 1]; - recentMenuItem.addActionListener(new java.awt.event.ActionListener() { + freimapgsoc.LayerForm.recentMenuItem = new JMenuItem(result[i]); + freimapgsoc.LayerForm.recentMenuItem.setToolTipText(result[i + 1]); + freimapgsoc.LayerForm.recentMenuItem.add(freimapgsoc.LayerForm.recentMenuItem, i); + path = result[i + 1]; + freimapgsoc.LayerForm.recentMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - newRecentFileActionPerformed(evt, recentFilePath); + freimapgsoc.newRecentFileActionPerformed(evt, path); } }); @@ -52,6 +54,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } } + /* public void addRecentFile(final String path, String name) { try { if (verifyRecentFile()) { @@ -87,9 +90,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { } catch (IOException io) { io.getMessage(); } - } + }*/ private boolean verifyRecentFile() { throw new UnsupportedOperationException("Not yet implemented"); } + + private JMenu recentMenu; }