001: package net.sourceforge.squirrel_sql.plugins.dataimport;
002:
003: /*
004: * Copyright (C) 2007 Thorsten Mürell
005: *
006: * This program is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU General Public License
008: * as published by the Free Software Foundation; either version 2
009: * of the License, or any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
019: */
020:
021: import net.sourceforge.squirrel_sql.client.IApplication;
022: import net.sourceforge.squirrel_sql.client.action.ActionCollection;
023: import net.sourceforge.squirrel_sql.client.gui.session.ObjectTreeInternalFrame;
024: import net.sourceforge.squirrel_sql.client.gui.session.SQLInternalFrame;
025: import net.sourceforge.squirrel_sql.client.plugin.DefaultSessionPlugin;
026: import net.sourceforge.squirrel_sql.client.plugin.PluginException;
027: import net.sourceforge.squirrel_sql.client.plugin.PluginSessionCallback;
028: import net.sourceforge.squirrel_sql.client.preferences.IGlobalPreferencesPanel;
029: import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI;
030: import net.sourceforge.squirrel_sql.client.session.ISession;
031: import net.sourceforge.squirrel_sql.fw.sql.DatabaseObjectType;
032: import net.sourceforge.squirrel_sql.plugins.dataimport.action.ImportTableDataAction;
033: import net.sourceforge.squirrel_sql.plugins.dataimport.prefs.PreferencesManager;
034:
035: /**
036: * Plugin to import data into a table
037: *
038: * @author Thorsten Mürell
039: */
040: public class DataImportPlugin extends DefaultSessionPlugin {
041: private Resources resources = null;
042:
043: /**
044: * Return the internal name of this plugin.
045: *
046: * @return the internal name of this plugin.
047: */
048: public String getInternalName() {
049: return "dataimport";
050: }
051:
052: /**
053: * Return the descriptive name of this plugin.
054: *
055: * @return the descriptive name of this plugin.
056: */
057: public String getDescriptiveName() {
058: return "Data Import Plugin";
059: }
060:
061: /**
062: * Returns the current version of this plugin.
063: *
064: * @return the current version of this plugin.
065: */
066: public String getVersion() {
067: return "0.02";
068: }
069:
070: /**
071: * Returns the authors name.
072: *
073: * @return the authors name.
074: */
075: public String getAuthor() {
076: return "Thorsten Mürell";
077: }
078:
079: @Override
080: public String getContributors() {
081: return "";
082: }
083:
084: @Override
085: public String getChangeLogFileName() {
086: return "changes.txt";
087: }
088:
089: @Override
090: public String getLicenceFileName() {
091: return "licence.txt";
092: }
093:
094: @Override
095: public String getHelpFileName() {
096: return "readme.html";
097: }
098:
099: @Override
100: public void load(IApplication app) throws PluginException {
101: super .load(app);
102: resources = new Resources(getClass().getName(), this );
103: }
104:
105: /**
106: * Initialize this plugin.
107: */
108: @Override
109: public synchronized void initialize() throws PluginException {
110: super .initialize();
111:
112: PreferencesManager.initialize(this );
113:
114: IApplication app = getApplication();
115: ActionCollection coll = app.getActionCollection();
116:
117: coll.add(new ImportTableDataAction(app, resources));
118: }
119:
120: /**
121: * Application is shutting down so save preferences.
122: */
123: @Override
124: public void unload() {
125: super .unload();
126: PreferencesManager.unload();
127: }
128:
129: @Override
130: public boolean allowsSessionStartedInBackground() {
131: return true;
132: }
133:
134: /**
135: * Called when a session started.
136: *
137: * @param session The session that is starting.
138: *
139: * @return <TT>true</TT> to indicate that this plugin is
140: * applicable to passed session.
141: */
142: public PluginSessionCallback sessionStarted(final ISession session) {
143: updateTreeApi(session);
144: return new PluginSessionCallback() {
145: public void sqlInternalFrameOpened(
146: SQLInternalFrame sqlInternalFrame, ISession sess) {
147: // Not needed
148: }
149:
150: public void objectTreeInternalFrameOpened(
151: ObjectTreeInternalFrame objectTreeInternalFrame,
152: ISession sess) {
153: /*
154: GUIUtils.processOnSwingEventThread(new Runnable() {
155: public void run() {
156: updateTreeApi(session);
157: }
158: });
159: */
160: }
161: };
162: }
163:
164: private void updateTreeApi(ISession session) {
165: IObjectTreeAPI treeAPI = session.getSessionInternalFrame()
166: .getObjectTreeAPI();
167: final ActionCollection coll = getApplication()
168: .getActionCollection();
169:
170: treeAPI.addToPopup(DatabaseObjectType.TABLE, coll
171: .get(ImportTableDataAction.class));
172: }
173:
174: /**
175: * Create preferences panel for the Global Preferences dialog.
176: *
177: * @return Preferences panel.
178: */
179: @Override
180: public IGlobalPreferencesPanel[] getGlobalPreferencePanels() {
181: // Not yet ready
182: // DataImportGlobalPreferencesTab tab = new DataImportGlobalPreferencesTab();
183: // return new IGlobalPreferencesPanel[] { tab };
184: return new IGlobalPreferencesPanel[] {};
185: }
186: }
|