001: package net.sourceforge.squirrel_sql.client.plugin;
002:
003: /*
004: * Copyright (C) 2001-2004 Colin Bell
005: * colbell@users.sourceforge.net
006: *
007: * Modifications Copyright (c) 2004 Jason Height.
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
022: */
023: import net.sourceforge.squirrel_sql.fw.sql.DatabaseObjectType;
024:
025: import net.sourceforge.squirrel_sql.client.session.ISession;
026: import net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.INodeExpander;
027: import net.sourceforge.squirrel_sql.client.session.properties.ISessionPropertiesPanel;
028:
029: /**
030: * Base interface for all plugins associated with a session.
031: */
032: public interface ISessionPlugin extends IPlugin {
033: /**
034: * A new session has been created. At this point the
035: * <TT>SessionPanel</TT> does not exist for the new session.
036: *
037: * @param session The new session.
038: *
039: * @throws IllegalArgumentException
040: * Thrown if a <TT>null</TT> ISession</TT> passed.
041: */
042: void sessionCreated(ISession session);
043:
044: /**
045: * Tells the PluginManager if this Plugins sessionStarted() method
046: * can be called in background
047: * @see ISessionPlugin.sessionStarted(ISession)
048: */
049: boolean allowsSessionStartedInBackground();
050:
051: /**
052: * Called when a session started.
053: *
054: * @param session The session that is starting.
055: *
056: * @return An implementation of PluginSessionCallback that requires the plugin to
057: * adequately work with multible session windows.
058: * Returning null tells the that the plugin is not applicable to this Session.
059: *
060: * @see ISessionPlugin.sessionStarted(ISession)
061: *
062: */
063: PluginSessionCallback sessionStarted(ISession session);
064:
065: /**
066: * Called when a session shutdown.
067: */
068: void sessionEnding(ISession session);
069:
070: /**
071: * Create panels for the Session Properties dialog.
072: *
073: * @param session The session that will be displayed in the properties dialog.
074: *
075: * @return Array of <TT>ISessionPropertiesPanel</TT> objects. Return
076: * empty array of <TT>null</TT> if this plugin doesn't require
077: * any panels in the Session Properties Dialog.
078: */
079: ISessionPropertiesPanel[] getSessionPropertiesPanels(
080: ISession session);
081:
082: /**
083: * Create panels for the Main Tabbed Pane.
084: *
085: * @param session The current session.
086: *
087: * @return Array of <TT>IMainPanelTab</TT> objects. Return
088: * empty array of <TT>null</TT> if this plugin doesn't require
089: * any panels in the Main Tabbed Pane.
090: */
091: //IMainPanelTab[] getMainTabbedPanePanels(ISession session);
092: /**
093: * Let app know what extra types of objects in object tree that
094: * plugin can handle.
095: */
096: IPluginDatabaseObjectType[] getObjectTypes(ISession session);
097:
098: /**
099: * Return a node expander for the object tree for a particular default node type.
100: * <p> A plugin could return non null here if they wish to override the default node
101: * expander bahaviour. Most plugins should return null here.
102: * <p>
103: * An example of this methods use is the oracle plugin. This plugin
104: * utilises this behaviour so that the procedure
105: * node does not list functions or procedures withint packages. This is different
106: * to the default bahaviour
107: * @return
108: */
109: INodeExpander getDefaultNodeExpander(ISession session,
110: DatabaseObjectType type);
111: }
|