package tim.prune;
+import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Locale;
import javax.swing.JFrame;
import javax.swing.JSplitPane;
+import javax.swing.JToolBar;
import javax.swing.WindowConstants;
import tim.prune.gui.DetailsDisplay;
import tim.prune.gui.MapChart;
import tim.prune.gui.MenuManager;
import tim.prune.gui.ProfileChart;
+import tim.prune.gui.SelectorDisplay;
/**
* Tool to visualize, edit and prune GPS data
+ * Please see the included readme.txt or http://activityworkshop.net
*/
public class GpsPruner
{
- // Version 2, released 29 March 2007, 1 April 2007
- public static final String VERSION_NUMBER = "2";
- public static final String BUILD_NUMBER = "056";
+ // Final release of version 4
+ public static final String VERSION_NUMBER = "4";
+ public static final String BUILD_NUMBER = "089";
private static App APP = null;
{
if (args[0].startsWith("--locale="))
{
- if (args[0].length() == 11)
- locale = new Locale(args[0].substring(9));
- else if (args[0].length() == 14)
- locale = new Locale(args[0].substring(9, 11), args[0].substring(12));
- else
- System.out.println("Unrecognised locale '" + args[0].substring(9)
- + "' - locale should be eg 'DE' or 'DE_ch'");
+ locale = getLanguage(args[0].substring(9));
+ }
+ else if (args[0].startsWith("--lang="))
+ {
+ locale = getLanguage(args[0].substring(7));
}
else
+ {
System.out.println("Unknown parameter '" + args[0] +
- "'. Possible parameters:\n --locale= used for overriding locale settings\n");
+ "'. Possible parameters:\n --locale= or --lang= used for overriding language settings\n");
+ }
}
I18nManager.init(locale);
launch();
}
+ /**
+ * Choose a locale based on the given code
+ * @param inString code for locale
+ * @return Locale object if available, otherwise null
+ */
+ private static Locale getLanguage(String inString)
+ {
+ if (inString.length() == 2)
+ {
+ return new Locale(inString);
+ }
+ else if (inString.length() == 5)
+ {
+ return new Locale(inString.substring(0, 2), inString.substring(3));
+ }
+ System.out.println("Unrecognised locale '" + inString
+ + "' - value should be eg 'DE' or 'DE_ch'");
+ return null;
+ }
+
+
/**
* Launch the main application
*/
frame.setJMenuBar(menuManager.createMenuBar());
APP.setMenuManager(menuManager);
broker.addSubscriber(menuManager);
+ // Make toolbar for buttons
+ JToolBar toolbar = menuManager.createToolBar();
// Make three GUI components and add as listeners
- DetailsDisplay leftPanel = new DetailsDisplay(APP, APP.getTrackInfo());
+ SelectorDisplay leftPanel = new SelectorDisplay(APP.getTrackInfo());
broker.addSubscriber(leftPanel);
+ DetailsDisplay rightPanel = new DetailsDisplay(APP.getTrackInfo());
+ broker.addSubscriber(rightPanel);
MapChart mapDisp = new MapChart(APP, APP.getTrackInfo());
broker.addSubscriber(mapDisp);
ProfileChart profileDisp = new ProfileChart(APP.getTrackInfo());
broker.addSubscriber(profileDisp);
- JSplitPane rightPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, mapDisp, profileDisp);
- rightPane.setResizeWeight(1.0); // allocate as much space as poss to map
+ JSplitPane midPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, mapDisp, profileDisp);
+ midPane.setResizeWeight(1.0); // allocate as much space as poss to map
+ JSplitPane triplePane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, midPane, rightPanel);
+ triplePane.setResizeWeight(1.0); // allocate as much space as poss to map
+
+ frame.getContentPane().setLayout(new BorderLayout());
+ frame.getContentPane().add(toolbar, BorderLayout.NORTH);
frame.getContentPane().add(new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel,
- rightPane));
+ triplePane), BorderLayout.CENTER);
// add closing listener
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// finish off and display frame
frame.pack();
- frame.setSize(600, 450);
+ frame.setSize(650, 450);
frame.show();
}
}