Last active
December 25, 2015 11:39
-
-
Save hallahan/6971161 to your computer and use it in GitHub Desktop.
The main view of a generic map navigation application.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.awt.Canvas; | |
import java.awt.EventQueue; | |
import java.text.DateFormat; | |
import java.util.Date; | |
import java.util.Locale; | |
import javax.swing.JFrame; | |
/** | |
* | |
* @author Nicholas Hallahan | |
*/ | |
public class GenericMapBrowser extends javax.swing.JFrame { | |
/** | |
* Creates new form SwingBuilderThenBrowser | |
*/ | |
public GenericMapBrowser() { | |
initComponents(); | |
} | |
/** | |
* 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") | |
// <editor-fold defaultstate="collapsed" desc="Generated Code"> | |
private void initComponents() { | |
basemapGroup = new javax.swing.ButtonGroup(); | |
navPanel = new javax.swing.JPanel(); | |
northBtn = new javax.swing.JButton(); | |
eastBtn = new javax.swing.JButton(); | |
westBtn = new javax.swing.JButton(); | |
southBtn = new javax.swing.JButton(); | |
zoomPanel = new javax.swing.JPanel(); | |
zoomSlider = new javax.swing.JSlider(); | |
closerBtn = new javax.swing.JButton(); | |
fartherBtn = new javax.swing.JButton(); | |
leafletUIModePanel = new javax.swing.JPanel(); | |
showBrowser = new javax.swing.JCheckBox(); | |
showLayersCheckBox = new javax.swing.JCheckBox(); | |
showZoomCheckBox = new javax.swing.JCheckBox(); | |
basemapPanel = new javax.swing.JPanel(); | |
topoRadio = new javax.swing.JRadioButton(); | |
streetsRadio = new javax.swing.JRadioButton(); | |
satelliteRadio = new javax.swing.JRadioButton(); | |
natGeoRadio = new javax.swing.JRadioButton(); | |
jScrollPane1 = new javax.swing.JScrollPane(); | |
textArea = new javax.swing.JTextArea(); | |
menuBar = new javax.swing.JMenuBar(); | |
fileMenu = new javax.swing.JMenu(); | |
editMenu = new javax.swing.JMenu(); | |
buildMenu = new javax.swing.JMenu(); | |
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); | |
navPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Navigation")); | |
northBtn.setText("North"); | |
eastBtn.setText("East"); | |
eastBtn.addActionListener(new java.awt.event.ActionListener() { | |
public void actionPerformed(java.awt.event.ActionEvent evt) { | |
eastBtnActionPerformed(evt); | |
} | |
}); | |
westBtn.setText("West"); | |
southBtn.setText("South"); | |
javax.swing.GroupLayout navPanelLayout = new javax.swing.GroupLayout(navPanel); | |
navPanel.setLayout(navPanelLayout); | |
navPanelLayout.setHorizontalGroup( | |
navPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(navPanelLayout.createSequentialGroup() | |
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
.addGroup(navPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, navPanelLayout.createSequentialGroup() | |
.addComponent(westBtn) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) | |
.addComponent(eastBtn)) | |
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, navPanelLayout.createSequentialGroup() | |
.addComponent(southBtn) | |
.addGap(33, 33, 33)) | |
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, navPanelLayout.createSequentialGroup() | |
.addComponent(northBtn) | |
.addGap(36, 36, 36)))) | |
); | |
navPanelLayout.setVerticalGroup( | |
navPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(navPanelLayout.createSequentialGroup() | |
.addComponent(northBtn) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addGroup(navPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | |
.addComponent(westBtn) | |
.addComponent(eastBtn)) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(southBtn) | |
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |
); | |
zoomPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Zoom")); | |
zoomSlider.setOrientation(javax.swing.JSlider.VERTICAL); | |
zoomSlider.addChangeListener(new javax.swing.event.ChangeListener() { | |
public void stateChanged(javax.swing.event.ChangeEvent evt) { | |
zoomSliderStateChanged(evt); | |
} | |
}); | |
closerBtn.setText("Closer"); | |
closerBtn.setName(""); // NOI18N | |
closerBtn.addActionListener(new java.awt.event.ActionListener() { | |
public void actionPerformed(java.awt.event.ActionEvent evt) { | |
closerBtnActionPerformed(evt); | |
} | |
}); | |
fartherBtn.setText("Farther"); | |
javax.swing.GroupLayout zoomPanelLayout = new javax.swing.GroupLayout(zoomPanel); | |
zoomPanel.setLayout(zoomPanelLayout); | |
zoomPanelLayout.setHorizontalGroup( | |
zoomPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(zoomPanelLayout.createSequentialGroup() | |
.addGroup(zoomPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(zoomPanelLayout.createSequentialGroup() | |
.addGap(31, 31, 31) | |
.addGroup(zoomPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) | |
.addComponent(fartherBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
.addComponent(closerBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) | |
.addGroup(zoomPanelLayout.createSequentialGroup() | |
.addGap(49, 49, 49) | |
.addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE))) | |
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |
); | |
zoomPanelLayout.setVerticalGroup( | |
zoomPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(zoomPanelLayout.createSequentialGroup() | |
.addComponent(closerBtn) | |
.addGap(2, 2, 2) | |
.addComponent(zoomSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(fartherBtn)) | |
); | |
leafletUIModePanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Leaflet UI Mode")); | |
showBrowser.setText("Show Browser"); | |
showBrowser.addActionListener(new java.awt.event.ActionListener() { | |
public void actionPerformed(java.awt.event.ActionEvent evt) { | |
showBrowserActionPerformed(evt); | |
} | |
}); | |
showBrowser.addPropertyChangeListener(new java.beans.PropertyChangeListener() { | |
public void propertyChange(java.beans.PropertyChangeEvent evt) { | |
showBrowserPropertyChange(evt); | |
} | |
}); | |
showLayersCheckBox.setText("Show Layers"); | |
showZoomCheckBox.setText("Show Zoom"); | |
javax.swing.GroupLayout leafletUIModePanelLayout = new javax.swing.GroupLayout(leafletUIModePanel); | |
leafletUIModePanel.setLayout(leafletUIModePanelLayout); | |
leafletUIModePanelLayout.setHorizontalGroup( | |
leafletUIModePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(leafletUIModePanelLayout.createSequentialGroup() | |
.addContainerGap() | |
.addGroup(leafletUIModePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addComponent(showLayersCheckBox) | |
.addComponent(showZoomCheckBox) | |
.addComponent(showBrowser)) | |
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |
); | |
leafletUIModePanelLayout.setVerticalGroup( | |
leafletUIModePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(leafletUIModePanelLayout.createSequentialGroup() | |
.addContainerGap() | |
.addComponent(showBrowser) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(showLayersCheckBox) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(showZoomCheckBox) | |
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |
); | |
basemapPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Basemap")); | |
basemapGroup.add(topoRadio); | |
topoRadio.setSelected(true); | |
topoRadio.setText("Topo"); | |
topoRadio.addActionListener(new java.awt.event.ActionListener() { | |
public void actionPerformed(java.awt.event.ActionEvent evt) { | |
topoRadioActionPerformed(evt); | |
} | |
}); | |
basemapGroup.add(streetsRadio); | |
streetsRadio.setText("Streets"); | |
streetsRadio.addActionListener(new java.awt.event.ActionListener() { | |
public void actionPerformed(java.awt.event.ActionEvent evt) { | |
streetsRadioActionPerformed(evt); | |
} | |
}); | |
basemapGroup.add(satelliteRadio); | |
satelliteRadio.setText("Satellite"); | |
satelliteRadio.addActionListener(new java.awt.event.ActionListener() { | |
public void actionPerformed(java.awt.event.ActionEvent evt) { | |
satelliteRadioActionPerformed(evt); | |
} | |
}); | |
basemapGroup.add(natGeoRadio); | |
natGeoRadio.setText("NatGeo"); | |
natGeoRadio.addActionListener(new java.awt.event.ActionListener() { | |
public void actionPerformed(java.awt.event.ActionEvent evt) { | |
natGeoRadioActionPerformed(evt); | |
} | |
}); | |
javax.swing.GroupLayout basemapPanelLayout = new javax.swing.GroupLayout(basemapPanel); | |
basemapPanel.setLayout(basemapPanelLayout); | |
basemapPanelLayout.setHorizontalGroup( | |
basemapPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(basemapPanelLayout.createSequentialGroup() | |
.addGroup(basemapPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addComponent(satelliteRadio) | |
.addComponent(topoRadio) | |
.addComponent(streetsRadio) | |
.addComponent(natGeoRadio)) | |
.addGap(0, 12, Short.MAX_VALUE)) | |
); | |
basemapPanelLayout.setVerticalGroup( | |
basemapPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(basemapPanelLayout.createSequentialGroup() | |
.addComponent(topoRadio) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(streetsRadio) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(satelliteRadio) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(natGeoRadio) | |
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |
); | |
textArea.setEditable(false); | |
textArea.setBackground(new java.awt.Color(0, 51, 51)); | |
textArea.setColumns(20); | |
textArea.setFont(new java.awt.Font("Lucida Console", 0, 14)); // NOI18N | |
textArea.setForeground(new java.awt.Color(204, 204, 204)); | |
textArea.setLineWrap(true); | |
textArea.setRows(5); | |
textArea.setText("This is where we will put a basemap."); | |
jScrollPane1.setViewportView(textArea); | |
fileMenu.setText("File"); | |
menuBar.add(fileMenu); | |
editMenu.setText("Edit"); | |
menuBar.add(editMenu); | |
buildMenu.setText("Build"); | |
menuBar.add(buildMenu); | |
setJMenuBar(menuBar); | |
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); | |
getContentPane().setLayout(layout); | |
layout.setHorizontalGroup( | |
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(layout.createSequentialGroup() | |
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) | |
.addComponent(navPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
.addComponent(zoomPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
.addComponent(leafletUIModePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 752, Short.MAX_VALUE) | |
.addGap(18, 18, 18) | |
.addComponent(basemapPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addContainerGap()) | |
); | |
layout.setVerticalGroup( | |
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(layout.createSequentialGroup() | |
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(layout.createSequentialGroup() | |
.addComponent(navPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(zoomPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addComponent(basemapPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(leafletUIModePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |
.addGroup(layout.createSequentialGroup() | |
.addContainerGap() | |
.addComponent(jScrollPane1) | |
.addContainerGap()) | |
); | |
pack(); | |
}// </editor-fold> | |
private void eastBtnActionPerformed(java.awt.event.ActionEvent evt) { | |
log(evt.toString()); | |
} | |
private void closerBtnActionPerformed(java.awt.event.ActionEvent evt) { | |
log("Closer Button Action Performed"); | |
} | |
private void topoRadioActionPerformed(java.awt.event.ActionEvent evt) { | |
log("topoRadioActionPerformed"); | |
} | |
private void streetsRadioActionPerformed(java.awt.event.ActionEvent evt) { | |
log("streetsRadioActionPerformed"); | |
} | |
private void satelliteRadioActionPerformed(java.awt.event.ActionEvent evt) { | |
log("satelliteRadioActionPerformed"); | |
} | |
private void natGeoRadioActionPerformed(java.awt.event.ActionEvent evt) { | |
log("natGeoRadioActionPerformed"); | |
} | |
private void showBrowserPropertyChange(java.beans.PropertyChangeEvent evt) { | |
// log("showBrowserPropertyChange"); | |
} | |
private void showBrowserActionPerformed(java.awt.event.ActionEvent evt) { | |
System.out.println("showBrowserActionPerformed"); | |
// MapBrowser mb = new MapBrowser(); | |
} | |
private void zoomSliderStateChanged(javax.swing.event.ChangeEvent evt) { | |
log("zoomSliderStateChanged "); | |
} | |
/** | |
* @param args the command line arguments | |
*/ | |
public static void main(String args[]) { | |
/* Set the Nimbus look and feel */ | |
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> | |
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. | |
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html | |
*/ | |
try { | |
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { | |
if ("Nimbus".equals(info.getName())) { | |
javax.swing.UIManager.setLookAndFeel(info.getClassName()); | |
break; | |
} | |
} | |
} catch (ClassNotFoundException ex) { | |
java.util.logging.Logger.getLogger(GenericMapBrowser.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |
} catch (InstantiationException ex) { | |
java.util.logging.Logger.getLogger(GenericMapBrowser.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |
} catch (IllegalAccessException ex) { | |
java.util.logging.Logger.getLogger(GenericMapBrowser.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |
} catch (javax.swing.UnsupportedLookAndFeelException ex) { | |
java.util.logging.Logger.getLogger(GenericMapBrowser.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); | |
} | |
//</editor-fold> | |
/* Create and display the form */ | |
java.awt.EventQueue.invokeLater(new Runnable() { | |
public void run() { | |
new GenericMapBrowser().setVisible(true); | |
} | |
}); | |
} | |
private void log(String txt) { | |
DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en", "EN")); | |
String formattedDate = df.format (new Date ()); | |
textArea.append("\n\n" + formattedDate + ": " + txt); | |
} | |
// Variables declaration - do not modify | |
private javax.swing.ButtonGroup basemapGroup; | |
private javax.swing.JPanel basemapPanel; | |
private javax.swing.JMenu buildMenu; | |
private javax.swing.JButton closerBtn; | |
private javax.swing.JButton eastBtn; | |
private javax.swing.JMenu editMenu; | |
private javax.swing.JButton fartherBtn; | |
private javax.swing.JMenu fileMenu; | |
private javax.swing.JScrollPane jScrollPane1; | |
private javax.swing.JPanel leafletUIModePanel; | |
private javax.swing.JMenuBar menuBar; | |
private javax.swing.JRadioButton natGeoRadio; | |
private javax.swing.JPanel navPanel; | |
private javax.swing.JButton northBtn; | |
private javax.swing.JRadioButton satelliteRadio; | |
private javax.swing.JCheckBox showBrowser; | |
private javax.swing.JCheckBox showLayersCheckBox; | |
private javax.swing.JCheckBox showZoomCheckBox; | |
private javax.swing.JButton southBtn; | |
private javax.swing.JRadioButton streetsRadio; | |
private javax.swing.JTextArea textArea; | |
private javax.swing.JRadioButton topoRadio; | |
private javax.swing.JButton westBtn; | |
private javax.swing.JPanel zoomPanel; | |
private javax.swing.JSlider zoomSlider; | |
// End of variables declaration | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment