|
What this is
Other links
The source code/* * :tabSize=8:indentSize=8:noTabs=false: * :folding=explicit:collapseFolds=1: * * Delegate.java - A delegate for NSApplication * Copyright (C) 2003 Kris Kopicki * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package macos; //{{{ Imports import com.apple.eawt.*; import com.apple.eio.*; import com.apple.cocoa.application.*; import com.apple.cocoa.foundation.*; import java.util.*; import java.io.File; import javax.swing.*; import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.browser.*; import org.gjt.sp.jedit.gui.*; import org.gjt.sp.jedit.msg.*; import org.gjt.sp.jedit.options.GlobalOptions; import org.gjt.sp.util.Log; //}}} public class Delegate extends ApplicationAdapter { //{{{ Variables private final NSSelector actionSel = new NSSelector("doAction", new Class[] {}); private List filenames = new LinkedList(); //}}} //{{{ Constructor public Delegate() { if (jEdit.getBooleanProperty("MacOSPlugin.useScreenMenuBar", jEdit.getBooleanProperty("MacOSPlugin.default.useScreenMenuBar")) ) System.setProperty("apple.laf.useScreenMenuBar","true"); else System.setProperty("apple.laf.useScreenMenuBar","false"); } //}}} //{{{ Handlers //{{{ handleAbout() method public void handleAbout(ApplicationEvent event) { event.setHandled(true); new AboutDialog(jEdit.getActiveView()); } //}}} //{{{ handleFileCodes() method public void handleFileCodes(BufferUpdate msg) { Buffer buffer = msg.getBuffer(); // Set type/creator on save if (!buffer.isDirty() && msg.getWhat() == BufferUpdate.DIRTY_CHANGED) { try { FileManager.setFileTypeAndCreator(buffer.getPath(), buffer.getIntegerProperty("MacOSPlugin.type", jEdit.getIntegerProperty("MacOSPlugin.default.type",0)), buffer.getIntegerProperty("MacOSPlugin.creator", jEdit.getIntegerProperty("MacOSPlugin.default.creator",0))); } catch (Exception e) { // Fail silently, since we may be using UFS } } // Add type/creator to local buffer property list on open else if (msg.getWhat() == BufferUpdate.CREATED) { if ("true".equals( jEdit.getProperty("MacOSPlugin.preserveCodes"))) { try { int type = FileManager.getFileType(buffer.getPath()); int creator = FileManager.getFileCreator(buffer.getPath()); if (type != 0) buffer.setIntegerProperty("MacOSPlugin.type",type); if (creator != 0) buffer.setIntegerProperty("MacOSPlugin.creator",creator); } catch (Exception e) { // This will happen when a new file is created } } } } //}}} //{{{ handleOpenFile() method public void handleOpenFile(ApplicationEvent event) { filenames.add(event.getFilename()); event.setHandled(true); } //}}} //{{{ handleOpenFile() method public void handleOpenFile(ViewUpdate msg) { if(msg.getWhat() == ViewUpdate.CREATED) { Iterator i = filenames.iterator(); while (i.hasNext()) jEdit.openFile(msg.getView(),(String)i.next()); MacOSPlugin.started = true; NSApplication app = NSApplication.sharedApplication(); app.setServicesProvider(new Delegate()); } } //}}} //{{{ handlePreferences() method public void handlePreferences(ApplicationEvent event) { event.setHandled(true); new GlobalOptions(jEdit.getActiveView()); } //}}} //{{{ handleQuit() method /** * This never seems to be called when used with a delegate */ //public void handleQuit(ApplicationEvent event) //{ // event.setHandled(false); // jEdit.exit(jEdit.getActiveView(),true); //} //}}} //}}} //{{{ Delegate methods //{{{ applicationDockMenu() method public NSMenu applicationDockMenu(NSApplication sender) { NSMenu dockMenu; BufferMenu bufMenu; MacrosMenu macMenu; RecentMenu recMenu; RecentDirMenu dirMenu; NSMenuItem showCurrItem; NSMenuItem showCurrDirItem; NSMenuItem newViewItem; // Buffers NSMenuItem miBuff = new NSMenuItem(jEdit.getProperty("MacOSPlugin.menu.buffers.label"),null,""); miBuff.setSubmenu(bufMenu = new BufferMenu()); // Recent Buffers NSMenuItem miRec = new NSMenuItem(jEdit.getProperty("MacOSPlugin.menu.recent.label"),null,""); miRec.setSubmenu(recMenu = new RecentMenu()); // Recent Directories NSMenuItem miDir = new NSMenuItem(jEdit.getProperty("MacOSPlugin.menu.recentDir.label"),null,""); miDir.setSubmenu(dirMenu = new RecentDirMenu()); // Macros NSMenuItem miMac = new NSMenuItem(jEdit.getProperty("MacOSPlugin.menu.macros.label"),null,""); miMac.setSubmenu(macMenu = new MacrosMenu()); dockMenu = new NSMenu(); newViewItem = new NSMenuItem(jEdit.getProperty("MacOSPlugin.menu.newView"),actionSel,""); newViewItem.setTarget(new NewViewAction()); dockMenu.addItem(newViewItem); dockMenu.addItem(new NSMenuItem().separatorItem()); showCurrItem = new NSMenuItem(jEdit.getProperty("MacOSPlugin.menu.showCurrent"),actionSel,""); dockMenu.addItem(showCurrItem); showCurrDirItem = new NSMenuItem(jEdit.getProperty("MacOSPlugin.menu.showCurrentDir"),actionSel,""); dockMenu.addItem(showCurrDirItem); dockMenu.addItem(new NSMenuItem().separatorItem()); dockMenu.addItem(miBuff); dockMenu.addItem(miRec); dockMenu.addItem(miDir); //dockMenu.addItem(new NSMenuItem().separatorItem()); //dockMenu.addItem(miMac); if (jEdit.getViewCount() == 0) miMac.setEnabled(false); bufMenu.updateMenu(); recMenu.updateMenu(); dirMenu.updateMenu(); macMenu.updateMenu(); View view = jEdit.getActiveView(); if (view != null) { File buff = new File(view.getBuffer().getPath()); if (buff.exists()) { showCurrItem.setTarget(new ShowFileAction(buff.getPath())); showCurrDirItem.setTarget(new ShowFileAction(buff.getParent())); } } else { showCurrItem.setEnabled(false); showCurrDirItem.setEnabled(false); } return dockMenu; } //}}} //{{{ applicationOpenFiles() method public void applicationOpenFiles(NSApplication sender, NSArray filenames) { int count = filenames.count(); for (int i=0; i |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.