From 8bf67d2af0432f634f4dc74fd181c2a2290bf969 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Fri, 11 May 2018 00:59:08 -0500 Subject: [PATCH] 1.0 Release --- KMLConverter/.classpath | 6 + .../New_Builder (4).launch | 13 ++ KMLConverter/.project | 27 +++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++ KMLConverter/KMLConverter.jar | Bin 0 -> 9401 bytes KMLConverter/bin/.gitignore | 1 + KMLConverter/input.txt | 2 + KMLConverter/map_locations.txt | 16 ++ KMLConverter/output.txt | 16 ++ KMLConverter/projectBuilder.xml | 18 ++ KMLConverter/src/sig/kml/KMLConverter.java | 99 ++++++++++ KMLConverter/src/sig/kml/KMLWindow.java | 173 ++++++++++++++++++ KMLConverter/test.txt | 2 + 13 files changed, 384 insertions(+) create mode 100644 KMLConverter/.classpath create mode 100644 KMLConverter/.externalToolBuilders/New_Builder (4).launch create mode 100644 KMLConverter/.project create mode 100644 KMLConverter/.settings/org.eclipse.jdt.core.prefs create mode 100644 KMLConverter/KMLConverter.jar create mode 100644 KMLConverter/bin/.gitignore create mode 100644 KMLConverter/input.txt create mode 100644 KMLConverter/map_locations.txt create mode 100644 KMLConverter/output.txt create mode 100644 KMLConverter/projectBuilder.xml create mode 100644 KMLConverter/src/sig/kml/KMLConverter.java create mode 100644 KMLConverter/src/sig/kml/KMLWindow.java create mode 100644 KMLConverter/test.txt diff --git a/KMLConverter/.classpath b/KMLConverter/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/KMLConverter/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/KMLConverter/.externalToolBuilders/New_Builder (4).launch b/KMLConverter/.externalToolBuilders/New_Builder (4).launch new file mode 100644 index 0000000..d37aa27 --- /dev/null +++ b/KMLConverter/.externalToolBuilders/New_Builder (4).launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/KMLConverter/.project b/KMLConverter/.project new file mode 100644 index 0000000..e183ecc --- /dev/null +++ b/KMLConverter/.project @@ -0,0 +1,27 @@ + + + KMLConverter + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.ui.externaltools.ExternalToolBuilder + full,incremental, + + + LaunchConfigHandle + <project>/.externalToolBuilders/New_Builder (4).launch + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/KMLConverter/.settings/org.eclipse.jdt.core.prefs b/KMLConverter/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/KMLConverter/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/KMLConverter/KMLConverter.jar b/KMLConverter/KMLConverter.jar new file mode 100644 index 0000000000000000000000000000000000000000..a9de4c50c0214ae4535d2dc036904ab5205bf00a GIT binary patch literal 9401 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 + + + +-97.998046875,31.503629305773032,0 + + + + + + +-96.998046875,31.503629305773032,0 + + + + diff --git a/KMLConverter/output.txt b/KMLConverter/output.txt new file mode 100644 index 0000000..1b78741 --- /dev/null +++ b/KMLConverter/output.txt @@ -0,0 +1,16 @@ + + + + +-97.998046875,31.503629305773032,0 + + + + + + +-96.998046875,31.503629305773032,0 + + + + diff --git a/KMLConverter/projectBuilder.xml b/KMLConverter/projectBuilder.xml new file mode 100644 index 0000000..3784b35 --- /dev/null +++ b/KMLConverter/projectBuilder.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/KMLConverter/src/sig/kml/KMLConverter.java b/KMLConverter/src/sig/kml/KMLConverter.java new file mode 100644 index 0000000..090aaa1 --- /dev/null +++ b/KMLConverter/src/sig/kml/KMLConverter.java @@ -0,0 +1,99 @@ +package sig.kml; + +import java.awt.Point; +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.StringSelection; +import java.awt.geom.Point2D; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class KMLConverter { + final static String TEMPLATE = "\n" + + "\n" + + "{MARKERS}" + + "\n"; + final static String MARKER_TEMPLATE = "\n" + + "\n" + + "{COORDINATES}\n" + + "\n" + + "\n"; + + static KMLWindow window; + + KMLConverter(String input_fileloc, String output_fileloc) { + String markers = ""; + + File f = new File(input_fileloc); + Scanner reader; + int datapoints = 0; + try { + reader = new Scanner(f); + double numb1,numb2; + window.addStatusMessage("Reading file from "+input_fileloc+"..."); + while (reader.hasNextLine()) { + String nextLine = reader.nextLine(); + try { + Point2D.Double vals = SplitLine(nextLine); + numb1 = vals.x; + numb2 = vals.y; + window.addStatusMessage("Read coords ("+(datapoints+1)+"): ["+numb1+","+numb2+"]"); + markers = ((markers.length()>0)?markers+"\n":"")+MARKER_TEMPLATE.replace("{COORDINATES}", numb1+","+numb2+",0")+"\n"; + datapoints++; + } catch (NumberFormatException e) {} + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + + String output = TEMPLATE.replace("{MARKERS}", markers); + + window.addStatusMessage("File written to "+output_fileloc+"."); + window.addStatusMessage("Conversion is complete! Translated file with "+datapoints+" coordinates. Copied to clipboard."); + Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); + StringSelection output_selection = new StringSelection(output); + c.setContents(output_selection, null); + File f_out = new File(output_fileloc); + try { + FileWriter fw = new FileWriter(f_out); + fw.write(output); + fw.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + javax.swing.SwingUtilities.invokeLater(new Runnable() { + public void run() { + window = new KMLWindow(); + } + }); + /* + + */ + + } + + static Point2D.Double SplitLine(String str) throws NumberFormatException{ + double numb1=0,numb2=0; + Pattern regex = Pattern.compile("(-?\\d+\\.\\d+)[^\\d-]*(-?\\d+\\.\\d+)"); + Matcher m = regex.matcher(str); + if (m.find()) { + numb1 = Double.valueOf(m.group(1)); + numb2 = Double.valueOf(m.group(2)); + } else { + //This is bad. + } + return new Point2D.Double(numb1,numb2); + } + + static boolean isNumeric(char c) { + return c=='-' || c=='.' || (c>='0' && c<='9'); + } +} diff --git a/KMLConverter/src/sig/kml/KMLWindow.java b/KMLConverter/src/sig/kml/KMLWindow.java new file mode 100644 index 0000000..4b201ce --- /dev/null +++ b/KMLConverter/src/sig/kml/KMLWindow.java @@ -0,0 +1,173 @@ +package sig.kml; + +import java.awt.Button; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.io.IOException; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSeparator; +import javax.swing.JTextArea; + +public class KMLWindow extends JFrame{ + JFrame f = new JFrame("KMLConverter 1.0"); + String input_fileloc="./input.txt", output_fileloc="./output.txt"; + ButtonLabel input = null,output = null; + JTextArea status_window = null; + JScrollPane pane; + JPanel panel = new JPanel(); + KMLWindow() { + try { + input=new ButtonLabel("Browse...",new File(".").getCanonicalPath(),"Input",this); + output=new ButtonLabel("Browse...",new File(".").getCanonicalPath(),"Output",this); + } catch (IOException e) { + e.printStackTrace(); + } + + ActionListener convert_action = new ActionListener(){ + @Override + public void actionPerformed(ActionEvent arg0) { + new KMLConverter(input_fileloc,output_fileloc); + } + }; + + JButton convert_but = new JButton("Convert"); + convert_but.setMinimumSize(new Dimension(128,24)); + convert_but.addActionListener(convert_action); + + + status_window = new JTextArea(8,32); + status_window.setAutoscrolls(true); + status_window.setEditable(false); + status_window.setLineWrap(true); + status_window.setWrapStyleWord(true); + status_window.setBackground(new Color(0,0,96)); + status_window.setForeground(new Color(220,220,220)); + + pane = new JScrollPane(status_window); + pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + pane.setPreferredSize(new Dimension(320,64)); + panel.setLayout(new BoxLayout(panel,BoxLayout.PAGE_AXIS)); + input.Initialize(panel); + output.Initialize(panel); + panel.add(Box.createVerticalStrut(6)); + panel.add(new JSeparator()); + panel.add(Box.createVerticalStrut(6)); + JPanel window_panel = new JPanel(); + window_panel.setLayout(new BoxLayout(window_panel,BoxLayout.LINE_AXIS)); + window_panel.add(pane); + + panel.add(window_panel); + panel.add(Box.createVerticalStrut(6)); + panel.add(new JSeparator()); + panel.add(Box.createVerticalStrut(6)); + panel.add(convert_but); + panel.setBackground(new Color(170,180,200)); + + f.add(panel); + f.pack(); + f.setLocationByPlatform(true); + f.setSize(640, 240); + f.setVisible(true); + } + + public void addStatusMessage(String msg) { + status_window.setText(status_window.getText()+"\n"+msg); + } +} + +class ButtonLabel{ + private KMLWindow parent; + private JButton b = new JButton(); + private JLabel l = new JLabel(); + private JPanel panel = new JPanel(); + private String label_type = ""; + private String label_header = ""; + private ActionListener listener; + ButtonLabel(String button_label,String label_text, String label_type,KMLWindow parent) { + this.parent=parent; + listener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + JFileChooser browse = new JFileChooser(); + browse.setDialogTitle("Select "+e.getActionCommand()+" File"); + switch (e.getActionCommand()) { + case "Input":{ + File f = new File(parent.input_fileloc); + if (!f.exists()) { + try { + f.createNewFile(); + } catch (IOException e1) { + e1.printStackTrace(); + }} + browse.setCurrentDirectory(f); + }break; + case "Output":{ + File f = new File(parent.output_fileloc); + if (!f.exists()) { + try { + f.createNewFile(); + } catch (IOException e1) { + e1.printStackTrace(); + }} + browse.setCurrentDirectory(f); + }break; + } + if (browse.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { + String fileloc = browse.getSelectedFile().getAbsolutePath(); + try { + String path = new File(fileloc).getCanonicalPath(); + l.setText(label_header+path); + switch (e.getActionCommand()) { + case "Input":{ + parent.input_fileloc = fileloc; + parent.addStatusMessage("New Input File Location: "+fileloc); + }break; + case "Output":{ + parent.output_fileloc = fileloc; + parent.addStatusMessage("New Output File Location: "+fileloc); + }break; + } + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } + }; + label_header = label_type+": "; + b.setText(button_label); + b.setActionCommand(label_type); + b.addActionListener(listener); + l.setText(label_header+label_text); + panel.setLayout(new BoxLayout(panel,BoxLayout.LINE_AXIS)); + panel.setBackground(new Color(170,180,200)); + l.setBackground(new Color(170,180,200)); + this.label_type = label_type; + } + + JButton getButton() { + return b; + } + JLabel getLabel() { + return l; + } + + void Initialize(JPanel p) { + panel.add(Box.createHorizontalStrut(32)); + panel.add(l); + panel.add(Box.createHorizontalStrut(64)); + panel.add(b); + p.add(panel); + } +} \ No newline at end of file diff --git a/KMLConverter/test.txt b/KMLConverter/test.txt new file mode 100644 index 0000000..8127d56 --- /dev/null +++ b/KMLConverter/test.txt @@ -0,0 +1,2 @@ +-97.998046875,31.503629305773032 +-96.998046875ABCDEFG31.503629305773032 \ No newline at end of file