zigen.plugin.db.DbPlugin.java Source code

Java tutorial

Introduction

Here is the source code for zigen.plugin.db.DbPlugin.java

Source

/*
 * Copyright (c) 2007 - 2009 ZIGEN
 * Eclipse Public License - v 1.0
 * http://www.eclipse.org/legal/epl-v10.html
 */
package zigen.plugin.db;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URL;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import kry.sql.format.SqlFormatRule;

import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IPluginDescriptor;
import org.eclipse.core.runtime.IPluginRegistry;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.PluginVersionIdentifier;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.util.BundleUtility;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

import zigen.plugin.db.core.ConditionManager;
import zigen.plugin.db.core.IDBConfig;
import zigen.plugin.db.core.SQLHistoryManager;
import zigen.plugin.db.core.StringUtil;
import zigen.plugin.db.preference.SQLFormatPreferencePage;
import zigen.plugin.db.ui.bookmark.BookmarkManager;
import zigen.plugin.db.ui.dialogs.DBDialogSettings;
import zigen.plugin.db.ui.dialogs.IDBDialogSettings;
import zigen.plugin.db.ui.editors.ITableViewEditor;
import zigen.plugin.db.ui.views.TreeContentProvider;
import zigen.plugin.db.ui.views.TreeView;

public class DbPlugin extends AbstractUIPlugin {

    private static DbPlugin plugin;

    private ResourceBundle resourceBundle;

    private IDBDialogSettings dBDialogSettings;

    private XmlController xmlController;

    private String defaultProject = null;

    public DbPlugin() {
        super();
        plugin = this;

        try {
            resourceBundle = ResourceBundle.getBundle("ResourceBundleMessages"); //$NON-NLS-1$
        } catch (MissingResourceException x) {
            resourceBundle = null;
        }
    }

    private ImageCacher imageCacher;

    public void start(BundleContext context) throws Exception {
        super.start(context);
        xmlController = new XmlController(getStateLocation());
        imageCacher = ImageCacher.getInstance();
    }

    public static final String getPluginVersion() {
        String pluginId = getPluginId();
        IPluginRegistry registry = Platform.getPluginRegistry();
        IPluginDescriptor descriptor = registry.getPluginDescriptor(pluginId);
        PluginVersionIdentifier v = descriptor.getVersionIdentifier();
        int major = v.getMajorComponent();
        int minor = v.getMinorComponent();
        int service = v.getServiceComponent();
        String date = v.getQualifierComponent();
        return major + "." + minor + "." + service + " release " + date;
    }

    public void stop(BundleContext context) throws Exception {
        try {
            imageCacher.clear();

            saveDBDialogSettings();
            xmlController.save();

        } finally {
            super.stop(context);
        }
    }

    public static DbPlugin getDefault() {
        return plugin;
    }

    public static String getResourceString(String key) {
        ResourceBundle bundle = DbPlugin.getDefault().getResourceBundle();
        try {
            return (bundle != null) ? bundle.getString(key) : key;
        } catch (MissingResourceException e) {
            return key;
        }
    }

    public ResourceBundle getResourceBundle() {
        return resourceBundle;
    }

    public SQLHistoryManager getHistoryManager() {
        return xmlController.getHistoryManager();
    }

    public ConditionManager getConditionManager() {
        return xmlController.getConditionManager();
    }

    public BookmarkManager getBookmarkManager() {
        return xmlController.getBookmarkManager();
    }

    public PluginSettingsManager getPluginSettingsManager() {
        return xmlController.getPluginSettingsManager();
    }

    public synchronized IDBDialogSettings getDBDialogSettings() {
        if (dBDialogSettings == null)
            loadDBDialogSettings();
        return dBDialogSettings;
    }

    protected void loadDBDialogSettings() {
        dBDialogSettings = new DBDialogSettings("Workbench"); //$NON-NLS-1$
        String readWritePath = getStateLocation().append(DbPluginConstant.FN_DB_SETTINGS).toOSString();
        File settingsFile = new File(readWritePath);
        if (settingsFile.exists()) {
            try {
                dBDialogSettings.load(readWritePath);
            } catch (IOException e) {
                dBDialogSettings = new DBDialogSettings("Workbench"); //$NON-NLS-1$
            }
        } else {
            URL dsURL = BundleUtility.find(getBundle(), DbPluginConstant.FN_DB_SETTINGS);
            if (dsURL == null)
                return;
            InputStream is = null;
            try {
                is = dsURL.openStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); //$NON-NLS-1$
                dBDialogSettings.load(reader);
            } catch (IOException e) {
                dBDialogSettings = new DBDialogSettings("Workbench"); //$NON-NLS-1$
            } finally {
                try {
                    if (is != null)
                        is.close();
                } catch (IOException e) {
                    // do nothing
                }
            }
        }
    }

    public void saveDBDialogSettings() {
        if (dBDialogSettings == null) {
            return;
        }
        try {
            String readWritePath = getStateLocation().append(DbPluginConstant.FN_DB_SETTINGS).toOSString();
            dBDialogSettings.save(readWritePath);
        } catch (IOException e) {
            DbPlugin.log(e);
        }
    }

    public static IViewPart findView(String viewId) {
        IWorkbenchPage page = getDefault().getPage();
        if (page != null) {
            return page.findView(viewId);
        } else {
            return null;
        }
    }

    public static IViewPart findView(String viewId, String secondaryId) throws PartInitException {
        IWorkbenchPage page = getDefault().getPage();
        if (page != null) {
            return page.showView(viewId, secondaryId, IWorkbenchPage.VIEW_VISIBLE);
        } else {
            return null;
        }
    }

    public static IViewPart showView(String viewId) throws PartInitException {
        IWorkbenchPage page = getDefault().getPage();
        if (page != null) {
            return page.showView(viewId);
        } else {
            return null;
        }
    }

    public static IViewPart showView(String viewId, String secondaryId) throws PartInitException {
        IWorkbenchPage page = getDefault().getPage();
        if (page != null) {
            return page.showView(viewId, secondaryId, IWorkbenchPage.VIEW_ACTIVATE);
        } else {
            return null;
        }
    }

    public static void hideView(IViewPart view) {
        IWorkbenchPage page = getDefault().getPage();
        if (page != null && view != null) {
            getDefault().getPage().hideView(view);
        }

    }

    public IWorkbenchPage getPage() {
        IWorkbench workbench = PlatformUI.getWorkbench();
        IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
        return window.getActivePage();
    }

    public Shell getShell() {
        IWorkbench workbench = PlatformUI.getWorkbench();
        IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
        return window.getShell();
    }

    public static ITableViewEditor getActiveTableViewEditor() {
        IEditorPart editor = DbPlugin.getDefault().getPage().getActiveEditor();
        if (editor instanceof ITableViewEditor) {
            return (ITableViewEditor) editor;
        } else {
            return null;
        }
    }

    public static void getCloseEditors(IEditorReference[] editorRefs) {
        DbPlugin.getDefault().getPage().closeEditors(editorRefs, true);
    }

    public void showInformationMessage(String message) {
        MessageDialog.openInformation(getShell(), DbPluginConstant.TITLE, message);
    }

    public void showWarningMessage(String message) {
        MessageDialog.openWarning(getShell(), DbPluginConstant.TITLE, message);
    }

    public boolean confirmDialog(String message) {
        return MessageDialog.openConfirm(getShell(), DbPluginConstant.TITLE, message);
    }

    public MessageDialogWithToggle confirmDialogWithToggle(String message, String toggleMessage,
            boolean toggleStatus) {
        return MessageDialogWithToggle.openYesNoQuestion(getShell(), DbPluginConstant.TITLE, message, toggleMessage,
                toggleStatus, null, null);
    }

    public String getDefaultProject() {
        return defaultProject;
    }

    public void setDefaultProject(String defaultProject) {
        this.defaultProject = defaultProject;
    }

    private static String getPluginId() {
        return getDefault().getBundle().getSymbolicName();
    }

    public static void log(String message, Throwable e) {
        IStatus status = new Status(IStatus.ERROR, getPluginId(), IStatus.ERROR, message, e);
        getDefault().getLog().log(status);
    }

    public static void log(String message) {
        log(message, null);
    }

    public static void log(Throwable e) {
        StringWriter stringWriter = new StringWriter();
        e.printStackTrace(new PrintWriter(stringWriter));
        String message = stringWriter.getBuffer().toString();
        log(message, e);

        // for debug
        if (e != null)
            e.printStackTrace();
    }

    public static void log(IStatus status) {
        getDefault().getLog().log(status);
    }

    private static String getErrorMessage(Throwable throwable) {
        if (throwable != null) {
            String msg = throwable.getMessage();
            if (msg == null) {
                return getErrorMessage(throwable.getCause());
            } else {
                return msg;
            }
        } else {
            return Messages.getString("DbPlugin.ConfrimStatckTraceMessage"); //$NON-NLS-1$
        }
    }

    private static String getFirstLineMessage(String message) {
        StringUtil.convertLineSep(message);
        int pos = message.indexOf("\n"); //$NON-NLS-1$
        if (pos > 0) {
            return message.substring(0, pos);
        } else {
            return message;
        }

    }

    static IStatus createErrorStatus(Throwable throwable) {
        String msg = getErrorMessage(throwable);
        String lineMsg = getFirstLineMessage(msg);

        // MultiStatus mStatus = new MultiStatus(getPluginId(), IStatus.ERROR, lineMsg, new Exception(Messages.getString("DbPlugin.1"))); //$NON-NLS-1$
        // MultiStatus mStatus = new MultiStatus(getPluginId(), IStatus.ERROR, lineMsg, null); //$NON-NLS-1$
        // mStatus.add(new Status(IStatus.ERROR, getPluginId(), IStatus.OK, msg, null));
        // return mStatus;
        return new Status(IStatus.ERROR, getPluginId(), IStatus.OK, lineMsg, throwable);

    }

    public static IStatus createWarningStatus(Throwable throwable) {
        return createWarningStatus(-1, throwable);
    }

    static IStatus createWarningStatus(int errorCode, Throwable throwable) {
        String msg = getErrorMessage(throwable);
        msg = getFirstLineMessage(msg);
        return new Status(IStatus.WARNING, getPluginId(), errorCode, msg, null);
    }

    public void showErrorDialog(Throwable throwable) {
        // for Debug
        if (throwable != null) {
            throwable.printStackTrace();
        }

        String message = Messages.getString("DbPlugin.ErrorMessage"); //$NON-NLS-1$
        IStatus status = null;

        if (throwable instanceof JobException) {
            JobException je = (JobException) throwable;
            Throwable cause = je.getCause();
            if (cause instanceof SQLException) {
                status = createErrorStatus(cause);
            } else {
                status = createErrorStatus(cause);

            }
        } else {

            if (throwable instanceof SQLException) {
                status = createErrorStatus(throwable);
            } else {
                status = createErrorStatus(throwable);
            }
        }
        ErrorDialog.openError(getShell(), DbPluginConstant.TITLE, message, status);
    }

    private String defaultSaveDir = null;

    public String getDefaultSaveDir() {
        return defaultSaveDir;
    }

    public void setDefaultSaveDir(String defaultSaveDir) {
        this.defaultSaveDir = defaultSaveDir;
    }

    public ImageDescriptor getImageDescriptor(String imageKey) {
        return getImageRegistry().getDescriptor(imageKey);
    }

    public Image getImage(String imageCode) {
        return imageCacher.getImage(imageCode);
    }

    public static Font getDefaultFont() {
        Font font = JFaceResources.getTextFont();
        return font;
    }

    public static Font getSmallFont() {
        Font newFont = null;
        Font font = getDefaultFont();
        FontData[] datas = font.getFontData();
        if (datas.length > 0) {
            FontData data = datas[0];
            int currnetHeight = data.getHeight();
            data.setHeight(currnetHeight - 1);
            newFont = new Font(Display.getDefault(), data);
        }
        return newFont;
    }

    public static FontData getDefaultFontData() {
        Font font = getDefaultFont();
        FontData[] datas = font.getFontData();
        if (datas.length > 0) {
            return datas[0];
        }
        return null;
    }

    public static SqlFormatRule getSqlFormatRult() {
        SqlFormatRule rule = DbPluginFormatRule.getInstance().getRule();
        IPreferenceStore st = getDefault().getPreferenceStore();
        int tabSize = st.getInt(SQLFormatPreferencePage.P_FORMAT_OPTION_TABSIZE);
        boolean optDecode = st.getBoolean(SQLFormatPreferencePage.P_FORMAT_OPTION_DECODE);
        boolean optIn = st.getBoolean(SQLFormatPreferencePage.P_FORMAT_OPTION_IN);

        rule.setIndentString(StringUtil.padding("", tabSize)); //$NON-NLS-1$
        rule.setDecodeSpecialFormat(!optDecode);
        rule.setInSpecialFormat(optIn);
        return rule;
    }

    public static IDBConfig[] getDBConfigs() {
        TreeView tv = (TreeView) findView(DbPluginConstant.VIEW_ID_TreeView);
        if (tv != null) {
            TreeContentProvider tcp = (TreeContentProvider) tv.getContentProvider();
            return tcp.getDBConfigs();
        } else {
            return null;
        }
    }

    private static List listeners = new ArrayList();

    public static void addStatusChangeListener(IStatusChangeListener listener) {
        if (!listeners.contains(listener))
            listeners.add(listener);
    }

    public static void removeStatusChangeListener(IStatusChangeListener listener) {
        listeners.remove(listener);
    }

    public static void fireStatusChangeListener(Object obj, int status) {
        for (Iterator iter = listeners.iterator(); iter.hasNext();) {
            IStatusChangeListener element = (IStatusChangeListener) iter.next();
            if (element != null) {
                element.statusChanged(obj, status);
            }
        }

    }

    public static final String IMG_CODE_BACK = "back.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_BOOKMARK = "bookmark.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_COLUMN = "column.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_CLOCK = "clock.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DB_ADD = "db_add.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DB_EDIT = "db_edit.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DB_COPY = "db_copy.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DB_DELETE = "db_delete.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DB = "db.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_CONNECTED_DB = "connecteddb.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_FORWARD = "forward.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DB_NEW = "new_db.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_NOTNULL_COLUMN = "notNull.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_PK_COLUMN = "primarykey.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_REFRESH = "refresh.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_SCHEMA = "schema.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_SQL = "sql.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_TABLE = "table.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DISABLED_TABLE = "disabledtable.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DISABLED_SYNONYM = "disabledsynonym.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_UNIQUEKEY = "uniquekey.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_ASC = "asc.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DESC = "desc.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_BLANK = "blank.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_SAVE = "save.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_UNKNOWN = "unknown.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_CHECKED = "checked.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_UNCHECKED = "unchecked.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DISABLED_CHECKED = "disabledchecked.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_CHECKED_CENTER = "checkedcenter.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_UNCHECKED_CENTER = "uncheckedcenter.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DISABLED_CHECKED_CENTER = "disabledcheckedcenter.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_TEMPLATE = "template.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_VIEW = "view.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_FUNCTION = "function.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_SYNONYM = "synonym.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_SEQUENCE = "sequence.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_EXECUTE = "execute.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_CLEAR = "clear.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_COMMIT = "commit.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_ROLLBACK = "rollback.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_IMPORT = "import.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_EXPORT = "export.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_FORMAT = "format.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_FORMAT2 = "format2.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_VERTICALLAYOUT = "verticallayout.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_HORIZONTALLAYOUT = "horizontallayout.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_REMOVE = "remove_exc.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_REMOVE_ALL = "removea_exc.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_PIN = "pin.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_OPEN = "open.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_SYNCED = "synced.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_COLUMN_ADD = "column_add.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_COLUMN_EDIT = "column_edit.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_COLUMN_DEL = "column_del.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_COLUMN_DUPLICATE = "column_duplicate.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_SCRIPT = "script.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_ERROR_ROOT = "error_root.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_ERROR = "error.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_AUTO = "auto_commit.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_MANUAL = "manual_commit.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_DUMMY = "dummy.gif"; //$NON-NLS-1$

    public static final String IMG_CODE_FILTER = "filter.gif";//$NON-NLS-1$

    public static final String IMG_CODE_PIN_COLUMN = "pin_column.gif";//$NON-NLS-1$

    public static final String IMG_CODE_ALIAS = "alias.gif";//$NON-NLS-1$

    public static final String IMG_CODE_RESULT = "result.gif";//$NON-NLS-1$

    public static final String IMG_CODE_ADD = "add.gif";//$NON-NLS-1$

    public static final String IMG_CODE_TOP = "top.gif";//$NON-NLS-1$

    public static final String IMG_CODE_END = "end.gif";//$NON-NLS-1$

    public static final String IMG_CODE_PREVIOUS = "previous.gif";//$NON-NLS-1$

    public static final String IMG_CODE_NEXT = "next.gif";//$NON-NLS-1$

    public static final String IMG_CODE_EXPAND_ALL = "expandAll.gif";//$NON-NLS-1$

    public static final String IMG_CODE_COLLAPSE_ALL = "collapseAll.gif";//$NON-NLS-1$

    public static final String IMG_CODE_WARNING = "warning.gif";//$NON-NLS-1$

    public static final String IMG_CODE_FOLDER_ERR = "folder_err.gif";//$NON-NLS-1$

    public static final String IMG_CODE_FUNCTION_ERR = "function_err.gif";//$NON-NLS-1$

    public static final String IMG_CODE_FILE_ERR = "file_err.gif";//$NON-NLS-1$

    protected void initializeImageRegistry(ImageRegistry registry) {

        registerImage(registry, IMG_CODE_SQL);
        registerImage(registry, IMG_CODE_SCHEMA);
        registerImage(registry, IMG_CODE_TABLE);
        registerImage(registry, IMG_CODE_DISABLED_TABLE);
        registerImage(registry, IMG_CODE_DISABLED_SYNONYM);
        registerImage(registry, IMG_CODE_PK_COLUMN);
        registerImage(registry, IMG_CODE_COLUMN);
        registerImage(registry, IMG_CODE_PK_COLUMN);
        registerImage(registry, IMG_CODE_NOTNULL_COLUMN);

        registerImage(registry, IMG_CODE_EXECUTE);
        registerImage(registry, IMG_CODE_CLEAR);

        registerImage(registry, IMG_CODE_FORWARD);
        registerImage(registry, IMG_CODE_BACK);

        registerImage(registry, IMG_CODE_REFRESH);
        registerImage(registry, IMG_CODE_COMMIT);
        registerImage(registry, IMG_CODE_ROLLBACK);

        registerImage(registry, IMG_CODE_DB_ADD);
        registerImage(registry, IMG_CODE_DB_EDIT);
        registerImage(registry, IMG_CODE_DB_DELETE);

        registerImage(registry, IMG_CODE_BOOKMARK);

        registerImage(registry, IMG_CODE_CLOCK);
        registerImage(registry, IMG_CODE_DB);
        registerImage(registry, IMG_CODE_CONNECTED_DB);

        registerImage(registry, IMG_CODE_DB_NEW);
        registerImage(registry, IMG_CODE_DB_COPY);

        registerImage(registry, IMG_CODE_ASC);
        registerImage(registry, IMG_CODE_DESC);
        registerImage(registry, IMG_CODE_BLANK);
        registerImage(registry, IMG_CODE_SAVE);
        registerImage(registry, IMG_CODE_UNKNOWN);

        registerImage(registry, IMG_CODE_CHECKED);
        registerImage(registry, IMG_CODE_UNCHECKED);
        registerImage(registry, IMG_CODE_DISABLED_CHECKED);

        registerImage(registry, IMG_CODE_CHECKED_CENTER);
        registerImage(registry, IMG_CODE_UNCHECKED_CENTER);
        registerImage(registry, IMG_CODE_DISABLED_CHECKED_CENTER);

        registerImage(registry, IMG_CODE_TEMPLATE);

        registerImage(registry, IMG_CODE_VIEW);
        registerImage(registry, IMG_CODE_FUNCTION);
        registerImage(registry, IMG_CODE_SYNONYM);
        registerImage(registry, IMG_CODE_SEQUENCE);
        registerImage(registry, IMG_CODE_IMPORT);
        registerImage(registry, IMG_CODE_EXPORT);

        registerImage(registry, IMG_CODE_FORMAT);
        registerImage(registry, IMG_CODE_FORMAT2);
        registerImage(registry, IMG_CODE_VERTICALLAYOUT);
        registerImage(registry, IMG_CODE_HORIZONTALLAYOUT);

        registerImage(registry, IMG_CODE_REMOVE);
        registerImage(registry, IMG_CODE_REMOVE_ALL);

        registerImage(registry, IMG_CODE_PIN);
        registerImage(registry, IMG_CODE_OPEN);
        registerImage(registry, IMG_CODE_SYNCED);

        registerImage(registry, IMG_CODE_COLUMN_ADD);
        registerImage(registry, IMG_CODE_COLUMN_EDIT);
        registerImage(registry, IMG_CODE_COLUMN_DEL);
        registerImage(registry, IMG_CODE_COLUMN_DUPLICATE);
        registerImage(registry, IMG_CODE_SCRIPT);

        registerImage(registry, IMG_CODE_ERROR_ROOT);
        registerImage(registry, IMG_CODE_ERROR);

        registerImage(registry, IMG_CODE_AUTO);
        registerImage(registry, IMG_CODE_MANUAL);

        registerImage(registry, IMG_CODE_DUMMY);
        registerImage(registry, IMG_CODE_FILTER);

        registerImage(registry, IMG_CODE_PIN_COLUMN);
        registerImage(registry, IMG_CODE_ALIAS);
        registerImage(registry, IMG_CODE_RESULT);
        registerImage(registry, IMG_CODE_ADD);

        registerImage(registry, IMG_CODE_TOP);
        registerImage(registry, IMG_CODE_END);
        registerImage(registry, IMG_CODE_PREVIOUS);
        registerImage(registry, IMG_CODE_NEXT);
        registerImage(registry, IMG_CODE_EXPAND_ALL);
        registerImage(registry, IMG_CODE_COLLAPSE_ALL);

        registerImage(registry, IMG_CODE_WARNING);
        registerImage(registry, IMG_CODE_FOLDER_ERR);
        registerImage(registry, IMG_CODE_FUNCTION_ERR);
        registerImage(registry, IMG_CODE_FILE_ERR);

    }

    private void registerImage(ImageRegistry registry, String fileName) {
        try {
            IPath path = new Path("icons/" + fileName); //$NON-NLS-1$
            URL url = find(path);
            if (url != null) {
                ImageDescriptor desc = ImageDescriptor.createFromURL(url);
                registry.put(fileName, desc);
            }
        } catch (Exception e) {
            DbPlugin.log(e);
        }
    }

    static String secondarlyId = null;

    public static void setSecondarlyId(String _secondarlyId) {
        secondarlyId = _secondarlyId;
    }

    public static String getSecondarlyId() {
        return secondarlyId;
    }
}