?? win32plugin.java
字號:
package com.valhalla.jbother.plugins;import com.valhalla.pluginmanager.*;import snoozesoft.systray4j.*;import com.valhalla.jbother.preferences.*;import com.valhalla.gui.*;import com.valhalla.jbother.*;import com.valhalla.jbother.plugins.events.*;import javax.swing.*;import org.joshy.jni.*;import org.jivesoftware.smack.XMPPConnection;import org.jivesoftware.smack.packet.Presence;import com.valhalla.settings.*;public class Win32Plugin implements Plugin, PluginEventListener, SysTrayMenuListener{ //private Win32PluginPrefsPanel prefs = new Win32PluginPrefsPanel(); /** * the System tray menu */ protected SysTrayMenu menu = null; /** * system tray icons */ protected SysTrayMenuIcon[] icons = {new SysTrayMenuIcon( PluginLoader.getInstance().getResourceAsStream( "native/systrayoffline.ico" ) ), new SysTrayMenuIcon(PluginLoader.getInstance().getResourceAsStream( "native/systray.ico" ) )}; private SysTrayConnectionListener connectionListener = new SysTrayConnectionListener( this ); private XMPPConnection connection = null; private boolean listenerAdded = false; public boolean init() { if( !System.getProperty( "os.name" ).startsWith( "Windows" ) ) { Standard.warningMessage( null, "Win32Plugin", "The Win32Plugin only works on Windows." ); return false; } PluginChain.addListener( this ); //PreferencesDialog.registerPluginPanel( "Win32 Plugin", prefs ); createMenu(); return true; } public void unload() { if( connection != null ) connection.removeConnectionListener( connectionListener ); //PreferencesDialog.removePluginPanel( "Win32 Plugin" ); PluginChain.removeListener( this ); if( menu != null ) menu.hideIcon(); } public void handleEvent( PluginEvent event ) { if( event instanceof ConnectEvent ) connectionHandler( event ); else if( event instanceof ExitingEvent ) exitingHandler( (ExitingEvent)event ); else if( event instanceof MessageReceivedEvent ) messageReceivedHandler( (MessageReceivedEvent)event ); } private void messageReceivedHandler( MessageReceivedEvent event ) { if( BuddyList.getInstance().getCurrentPresenceMode() != Presence.Mode.AVAILABLE ) return; ConversationPanel panel = (ConversationPanel)event.getSource(); JFrame f = panel.getContainingFrame(); if( Settings.getInstance().getBoolean( "useTabbedWindow" ) ) { f = BuddyList.getInstance().getTabFrame(); } if( f != null ) { WindowUtil.doFlash( f, false ); } } private void connectionHandler( PluginEvent event ) { if( SysTrayMenu.isAvailable() ) { connection = (XMPPConnection)event.getSource(); if( !listenerAdded ) { connection.addConnectionListener( connectionListener ); listenerAdded = true; } menu.setIcon( icons[1] ); } } private void exitingHandler( ExitingEvent event ) { if( SysTrayMenu.isAvailable() ) { BuddyList.getInstance().getContainerFrame().setVisible( false ); event.setExit( false ); } else { event.setExit( true ); } } /** * Called when the status icon is left clicked * * @param e the event */ public void iconLeftClicked( SysTrayMenuEvent e ) { if( BuddyList.getInstance().getContainerFrame().isVisible() ) { BuddyList.getInstance().getContainerFrame().setVisible( false ); } else { BuddyList.getInstance().getContainerFrame().setVisible( true ); BuddyList.getInstance().getContainerFrame().setState( JFrame.NORMAL ); } } /** * left double clicked * * @param e the event */ public void iconLeftDoubleClicked( SysTrayMenuEvent e ) { // Do nothing special! } /** * item in the system tray menu is selected * * @param e the event */ public void menuItemSelected( SysTrayMenuEvent e ) { if( e.getActionCommand().equals( "exit" ) ) { BuddyList.getInstance().quitHandler( ); } else if( e.getActionCommand().equals( "prefs" ) ) { if( !DialogTracker.containsDialog( PreferencesDialog.class ) ) { new PreferencesDialog().setVisible(true); } } } /** * Creates the system tray menu */ private void createMenu() { if( SysTrayMenu.isAvailable() ) { SysTrayMenuItem itemPrefs = new SysTrayMenuItem( "Preferences", "prefs" ); SysTrayMenuItem itemExit = new SysTrayMenuItem( "Exit", "exit" ); itemPrefs.addSysTrayMenuListener( this ); itemExit.addSysTrayMenuListener( this ); icons[0].addSysTrayMenuListener( this ); icons[1].addSysTrayMenuListener( this ); int which = 0; XMPPConnection connection = BuddyList.getInstance().getConnection(); if( connection != null && connection.isConnected() ) { which = 1; if( !listenerAdded ) { connection.addConnectionListener( connectionListener ); listenerAdded = true; } } menu = new SysTrayMenu( icons[which], "JBother" ); menu.addItem( itemExit ); menu.addItem( itemPrefs ); } else { com.valhalla.Logger.debug( "Could not create menu." ); } }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -