3 import java.awt.BorderLayout;
4 import java.awt.event.WindowAdapter;
5 import java.awt.event.WindowEvent;
6 import java.util.Locale;
8 import javax.swing.JFrame;
9 import javax.swing.JSplitPane;
10 import javax.swing.JToolBar;
11 import javax.swing.WindowConstants;
13 import tim.prune.gui.DetailsDisplay;
14 import tim.prune.gui.MapChart;
15 import tim.prune.gui.MenuManager;
16 import tim.prune.gui.ProfileChart;
17 import tim.prune.gui.SelectorDisplay;
20 * Tool to visualize, edit and prune GPS data
21 * Please see the included readme.txt or http://activityworkshop.net
23 public class GpsPruner
25 // Final release of version 4
26 public static final String VERSION_NUMBER = "4";
27 public static final String BUILD_NUMBER = "089";
28 private static App APP = null;
33 * @param args command line arguments
35 public static void main(String[] args)
40 if (args[0].startsWith("--locale="))
42 locale = getLanguage(args[0].substring(9));
44 else if (args[0].startsWith("--lang="))
46 locale = getLanguage(args[0].substring(7));
50 System.out.println("Unknown parameter '" + args[0] +
51 "'. Possible parameters:\n --locale= or --lang= used for overriding language settings\n");
54 I18nManager.init(locale);
60 * Choose a locale based on the given code
61 * @param inString code for locale
62 * @return Locale object if available, otherwise null
64 private static Locale getLanguage(String inString)
66 if (inString.length() == 2)
68 return new Locale(inString);
70 else if (inString.length() == 5)
72 return new Locale(inString.substring(0, 2), inString.substring(3));
74 System.out.println("Unrecognised locale '" + inString
75 + "' - value should be eg 'DE' or 'DE_ch'");
81 * Launch the main application
83 private static void launch()
85 JFrame frame = new JFrame("Prune");
86 UpdateMessageBroker broker = new UpdateMessageBroker();
87 APP = new App(frame, broker);
90 MenuManager menuManager = new MenuManager(frame, APP, APP.getTrackInfo());
91 frame.setJMenuBar(menuManager.createMenuBar());
92 APP.setMenuManager(menuManager);
93 broker.addSubscriber(menuManager);
94 // Make toolbar for buttons
95 JToolBar toolbar = menuManager.createToolBar();
97 // Make three GUI components and add as listeners
98 SelectorDisplay leftPanel = new SelectorDisplay(APP.getTrackInfo());
99 broker.addSubscriber(leftPanel);
100 DetailsDisplay rightPanel = new DetailsDisplay(APP.getTrackInfo());
101 broker.addSubscriber(rightPanel);
102 MapChart mapDisp = new MapChart(APP, APP.getTrackInfo());
103 broker.addSubscriber(mapDisp);
104 ProfileChart profileDisp = new ProfileChart(APP.getTrackInfo());
105 broker.addSubscriber(profileDisp);
107 JSplitPane midPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, mapDisp, profileDisp);
108 midPane.setResizeWeight(1.0); // allocate as much space as poss to map
109 JSplitPane triplePane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, midPane, rightPanel);
110 triplePane.setResizeWeight(1.0); // allocate as much space as poss to map
112 frame.getContentPane().setLayout(new BorderLayout());
113 frame.getContentPane().add(toolbar, BorderLayout.NORTH);
114 frame.getContentPane().add(new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel,
115 triplePane), BorderLayout.CENTER);
116 // add closing listener
117 frame.addWindowListener(new WindowAdapter() {
118 public void windowClosing(WindowEvent e) {
122 // Avoid automatically shutting down if window closed
123 frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
125 // finish off and display frame
127 frame.setSize(650, 450);