]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/threedee/LineDialog.java
Version 3, August 2007
[GpsPrune.git] / tim / prune / threedee / LineDialog.java
diff --git a/tim/prune/threedee/LineDialog.java b/tim/prune/threedee/LineDialog.java
new file mode 100644 (file)
index 0000000..a11525f
--- /dev/null
@@ -0,0 +1,111 @@
+package tim.prune.threedee;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JEditorPane;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+import tim.prune.I18nManager;
+import tim.prune.data.Latitude;
+import tim.prune.data.Longitude;
+
+/**
+ * Class to show a dialog displaying the line coordinates
+ * for a 3d view (either java3d or povray)
+ */
+public class LineDialog
+{
+       private JDialog _dialog = null;
+       private JFrame _parent = null;
+       private double[] _latLines = null;
+       private double[] _lonLines = null;
+
+
+       /**
+        * Constructor giving parent frame, latitude and longitude lines
+        * @param inParent parent frame for dialog
+        * @param inLatLines latitude lines as doubles
+        * @param inLonLines longitude lines as doubles
+        */
+       public LineDialog(JFrame inParent, double[] inLatLines, double[] inLonLines)
+       {
+               _parent = inParent;
+               _latLines = inLatLines;
+               _lonLines = inLonLines;
+       }
+
+
+       /**
+        * Show the dialog with the lines
+        */
+       public void showDialog()
+       {
+               _dialog = new JDialog(_parent, I18nManager.getText("dialog.3dlines.title"), true);
+               _dialog.setLocationRelativeTo(_parent);
+               _dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+               _dialog.getContentPane().add(makeDialogComponents());
+               _dialog.pack();
+               _dialog.show();
+       }
+
+
+       /**
+        * @return dialog components
+        */
+       private JPanel makeDialogComponents()
+       {
+               JPanel panel = new JPanel();
+               panel.setLayout(new BorderLayout());
+               StringBuffer descBuffer = new StringBuffer();
+               if (_latLines == null || _latLines.length == 0 || _lonLines == null || _lonLines.length == 0)
+               {
+                       descBuffer.append("<p>").append(I18nManager.getText("dialog.3dlines.empty")).append("</p>");
+               }
+               else
+               {
+                       descBuffer.append("<p>").append(I18nManager.getText("dialog.3dlines.intro")).append(":</p>");
+                       descBuffer.append("<p>").append(I18nManager.getText("fieldname.latitude")).append("<ul>");
+                       Latitude lat = null;
+                       for (int i=0; i<_latLines.length; i++)
+                       {
+                               lat = new Latitude(_latLines[i], Latitude.FORMAT_DEG);
+                               descBuffer.append("<li>").append(lat.output(Latitude.FORMAT_DEG_WHOLE_MIN)).append("</li>");
+                       }
+                       descBuffer.append("</ul></p>");
+                       descBuffer.append("<p>").append(I18nManager.getText("fieldname.longitude")).append("<ul>");
+                       Longitude lon = null;
+                       for (int i=0; i<_lonLines.length; i++)
+                       {
+                               lon = new Longitude(_lonLines[i], Longitude.FORMAT_DEG);
+                               descBuffer.append("<li>").append(lon.output(Longitude.FORMAT_DEG_WHOLE_MIN)).append("</li>");
+                       }
+                       descBuffer.append("</ul></p>");
+               }
+               JEditorPane descPane = new JEditorPane("text/html", descBuffer.toString());
+               descPane.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
+               descPane.setEditable(false);
+               descPane.setOpaque(false);
+               panel.add(descPane, BorderLayout.CENTER);
+               // ok button
+               JPanel buttonPanel = new JPanel();
+               buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
+               JButton okButton = new JButton(I18nManager.getText("button.ok"));
+               okButton.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent e)
+                       {
+                               _dialog.dispose();
+                               _dialog = null;
+                       }
+               });
+               buttonPanel.add(okButton);
+               panel.add(buttonPanel, BorderLayout.SOUTH);
+               return panel;
+       }
+}