Subversion Repositories wimsdev

Rev

Rev 3662 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*
  2.     Sketch Elements: Chemistry molecular diagram drawing tool.
  3.    
  4.     (c) 2005 Dr. Alex M. Clark
  5.    
  6.     Released as GNUware, under the Gnu Public License (GPL)
  7.    
  8.     See www.gnu.org for details.
  9. */
  10.  
  11. package WIMSchem;
  12.  
  13. import WIMSchem.ds.*;
  14.  
  15. import java.io.*;
  16. import java.awt.*;
  17. import java.util.*;
  18. import java.awt.image.*;
  19. import java.awt.event.*;
  20. import java.awt.datatransfer.*;
  21. import javax.swing.*;
  22.  
  23. /*
  24.     Main application window, and entrypoint for application mode.
  25. */
  26.  
  27. public class MainWindow extends JFrame
  28. {
  29.     public MainPanel mainPanel=null;
  30.  
  31.     public MainWindow(String LoadFN,boolean StreamMode)
  32.     {
  33.         super("WIMSchem");
  34.  
  35.         // application
  36.        
  37.         JFrame.setDefaultLookAndFeelDecorated(false);
  38.         setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  39.  
  40.         // main panel
  41.  
  42.         getContentPane().setLayout(new BorderLayout());
  43.         mainPanel=new MainPanel(LoadFN,MainPanel.MODE_NORMAL,this);
  44.         getContentPane().add(mainPanel,BorderLayout.CENTER);
  45.         pack();
  46.  
  47.         setIconImage(mainPanel.mainIcon.getImage());
  48.     }
  49.  
  50.     public MainPanel mainPanel() {return mainPanel;}
  51.  
  52.     // ------------------ init functions --------------------
  53.    
  54.     static String[] args;
  55.    
  56.     private static void createAndShowGUI()
  57.     {
  58.         boolean dump=false,stream=false;
  59.         ArrayList<String> openfiles=new ArrayList<String>();
  60.         boolean dsmode=false;
  61.        
  62.         int i=0;
  63.         while (i<args.length)
  64.         {
  65.             if (args[i].charAt(0)=='-')
  66.             {
  67.                 if (args[i].compareTo("-h")==0 || args[i].compareTo("--help")==0) {dump=true; break;}
  68.                 else if (args[i].compareTo("-v")==0 || args[i].compareTo("--version")==0) {dump=true; break;}
  69.                 else if (args[i].compareTo("-s")==0 || args[i].compareTo("--stream")==0) {stream=true; i++;}
  70.                 else if (args[i].compareTo("-m")==0 || args[i].compareTo("--molecule")==0) {dsmode=false; i++;}
  71.                 else if (args[i].compareTo("-d")==0 || args[i].compareTo("--datasheet")==0) {dsmode=true; i++;}
  72.                 else
  73.                 {
  74.                     System.out.println("Error: unexpected argument:");
  75.                     System.out.println(args[i]);
  76.                     return;
  77.                 }
  78.             }
  79.             else
  80.             {
  81.                 File f=new File(args[i]);
  82.                 if (f.exists()) openfiles.add(args[i]);
  83.                 else System.out.println("Warning: Filename ["+args[i]+"] does not exist.");
  84.                 i++;
  85.             }
  86.         }
  87.        
  88.         if (stream && dsmode)
  89.         {
  90.             System.out.println("Invalid: stream mode cannot be combined with datasheet mode");
  91.             return;
  92.         }
  93.        
  94.         if (dump)
  95.         {
  96.             System.out.println("WIMSchem: Molecular drawing tool");
  97.             System.out.println("          Version "+MainPanel.VERSION+" © 2005-2013 Dr. Alex M. Clark");
  98.             System.out.println("          Open source, released under the Gnu Public License (GPL),");
  99.             System.out.println("          see www.gnu.org. For home page and documentation, see");
  100.             System.out.println("          http://sketchel.sf.net\n");
  101.  
  102.             System.out.println("Command line parameters:");
  103.             System.out.println(" -h|--help|-v|--version    Show parameters and summary info");
  104.             System.out.println(" -s|--stream               Read from <stdin> at startup, write to");
  105.             System.out.println(" -m|--molecule             Open in new Molecule mode");
  106.             System.out.println(" -d|--datasheet            Open in new DataSheet mode");
  107.             System.out.println("                           <stdout> on quit.");
  108.             System.out.println(" filenames                 Open files on startup.");
  109.         }
  110.         else
  111.         {
  112.             if (stream || openfiles.size()==0)
  113.             {
  114.                 if (!dsmode) new MainWindow(null,stream).setVisible(true);
  115.                 else new DataWindow(null).setVisible(true);
  116.             }
  117.             else
  118.             {
  119.                 for (int n=0;n<openfiles.size();n++)
  120.                 {
  121.                     if (!dsmode) new MainWindow(openfiles.get(n),false).setVisible(true);
  122.                     else new DataWindow(openfiles.get(n)).setVisible(true);
  123.                 }
  124.             }
  125.         }
  126.     }
  127.  
  128.     public static void main(String[] args)
  129.     {
  130.         MainWindow.args=args;
  131.         javax.swing.SwingUtilities.invokeLater(new Runnable() {public void run() {createAndShowGUI();}});
  132.     }
  133. }
  134.  
  135.  
  136.