Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: macos/MacOSPlugin.java


1   /* 
2    * :tabSize=8:indentSize=8:noTabs=false:
3    * :folding=explicit:collapseFolds=1:
4    *
5    * MacOSPlugin.java - Main class Mac OS Plugin
6    * Copyright (C) 2001, 2002 Kris Kopicki
7    *
8    * This program is free software; you can redistribute it and/or
9    * modify it under the terms of the GNU General Public License
10   * as published by the Free Software Foundation; either version 2
11   * of the License, or any later version.
12   *
13   * This program is distributed in the hope that it will be useful,
14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   * GNU General Public License for more details.
17   *
18   * You should have received a copy of the GNU General Public License
19   * along with this program; if not, write to the Free Software
20   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21   */
22  
23  package macos;
24  
25  //{{{ Imports
26  import java.util.Vector;
27  import javax.swing.*;
28  import org.gjt.sp.jedit.*;
29  import org.gjt.sp.jedit.gui.*;
30  import org.gjt.sp.jedit.msg.*;
31  import org.gjt.sp.util.Log;
32  import macos.menu.*;
33  import macos.script.*;
34  import com.apple.cocoa.application.*;
35  import com.apple.eawt.Application;
36  //}}}
37  
38  public class MacOSPlugin extends EBPlugin
39  {
40    //{{{ Variables
41    static boolean started = false;
42    private boolean osok;
43    private Delegate delegate;
44    //}}}
45    
46    //{{{ start() method
47    public void start()
48    {
49      if(osok = osok())
50      {
51        delegate = new Delegate();
52        NSApplication app = NSApplication.sharedApplication();
53        
54        Macros.registerHandler(new AppleScriptHandler());
55        Application app2 = new Application();
56        app2.addApplicationListener(delegate);
57        app2.setEnabledPreferencesMenu(true);
58        app2.setEnabledAboutMenu(true);
59        
60        app.setDelegate(delegate);
61        app.setServicesProvider(delegate);
62      }
63    } //}}}
64    
65    //{{{ handleMessage() method
66    public void handleMessage(EBMessage message)
67    {
68      if (osok)
69      {
70        // Set type/creator codes for files
71        if (message instanceof BufferUpdate)
72          delegate.handleFileCodes((BufferUpdate)message);
73        else if (message instanceof PropertiesChanged)
74        {
75          boolean b = jEdit.getBooleanProperty("MacOSPlugin.useSelection",
76            jEdit.getBooleanProperty("MacOSPlugin.default.useSelection"));
77          if (b)
78            jEdit.setColorProperty("view.selectionColor",
79              UIManager.getColor("textHighlight"));
80        }
81        // This is necessary to have a file opened from the Finder
82        // before jEdit is running set as the currently active
83        // buffer.
84        else if (!started && message instanceof ViewUpdate)
85          delegate.handleOpenFile((ViewUpdate)message);
86      }
87    }//}}}
88    
89    //{{{ osok() method
90    private boolean osok()
91    {
92      final String osname = jEdit.getProperty("MacOSPlugin.depend.os.name");
93      final String mrjversion = jEdit.getProperty("MacOSPlugin.depend.mrj.version");
94      
95      if (!System.getProperty("os.name").equals(osname))
96      {
97        // According to Slava this is better
98        Log.log(Log.ERROR,this,jEdit.getProperty("MacOSPlugin.dialog.osname.message"));
99        return false;
100     }
101     if (System.getProperty("mrj.version").compareTo(mrjversion) < 0)
102     {
103       SwingUtilities.invokeLater( new Runnable() { public void run() {
104         GUIUtilities.error(null,"MacOSPlugin.dialog.mrjversion",new Object[] {mrjversion});
105       }});
106       return false;
107     }
108 
109     return true;
110   }//}}}
111 }