Package org.objectstyle.wolips.baseforuiplugins

Source Code of org.objectstyle.wolips.baseforuiplugins.AbstractBaseUIActivator

/*
* ====================================================================
*
* The ObjectStyle Group Software License, Version 1.0
*
* Copyright (c) 2005 The ObjectStyle Group and individual authors of the
* software. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowlegement: "This product includes software
* developed by the ObjectStyle Group (http://objectstyle.org/)." Alternately,
* this acknowlegement may appear in the software itself, if and wherever such
* third-party acknowlegements normally appear.
*
* 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse
* or promote products derived from this software without prior written
* permission. For written permission, please contact andrus@objectstyle.org.
*
* 5. Products derived from this software may not be called "ObjectStyle" nor
* may "ObjectStyle" appear in their names without prior written permission of
* the ObjectStyle Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* OBJECTSTYLE GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the ObjectStyle Group. For more information on the ObjectStyle
* Group, please see <http://objectstyle.org/>.
*/
package org.objectstyle.wolips.baseforuiplugins;

import java.util.MissingResourceException;
import java.util.ResourceBundle;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.ui.texteditor.IDocumentProvider;
import org.eclipse.ui.texteditor.ITextEditor;
import org.osgi.framework.BundleContext;

public abstract class AbstractBaseUIActivator extends AbstractUIPlugin {
  // Resource bundle.
  private ResourceBundle resourceBundle;

  // The shared instance.
  private static AbstractBaseUIActivator Plugin;

  private boolean debug = true;

  private String bundleID;

  /**
   * The constructor.
   */
  public AbstractBaseUIActivator() {
    super();
    AbstractBaseUIActivator.Plugin = this;
  }

  public final String getBundleID() {
    if (bundleID == null) {
      bundleID = this.getClass().getName() + "Resources";
    }
    return bundleID;
  }

  /**
   * This method is called when the plug-in is stopped
   */
  public void stop(BundleContext context) throws Exception {
    super.stop(context);
    this.resourceBundle = null;
  }

  /**
   * Returns the string from the plugin's resource bundle, or 'key' if not
   * found.
   */
  public final static String getResourceString(String key) {
    ResourceBundle bundle = AbstractBaseUIActivator.Plugin.getResourceBundle();
    try {
      return (bundle != null) ? bundle.getString(key) : key;
    } catch (MissingResourceException e) {
      return key;
    }
  }

  /**
   * Returns the plugin's resource bundle,
   */
  public final ResourceBundle getResourceBundle() {
    try {
      if (this.resourceBundle == null)
        this.resourceBundle = ResourceBundle.getBundle(this.getBundleID());
    } catch (MissingResourceException x) {
      this.resourceBundle = null;
    }
    return this.resourceBundle;
  }

  /**
   * Prints an IStatus.
   *
   * @param status
   */
  public void log(IStatus status) {
    this.getLog().log(status);
  }

  /**
   * Prints a message.
   *
   * @param message
   */
  public void log(Object message) {
    this.log(new Status(IStatus.ERROR, this.getBundleID(), IStatus.ERROR, "" + message, null));
  }

  /**
   * Prints a Throwable.
   *
   * @param e
   */
  public void log(Throwable e) {
    this.log(new Status(IStatus.ERROR, this.getBundleID(), IStatus.ERROR, "Internal Error", e)); //$NON-NLS-1$
  }

  /**
   * Prints a Throwable.
   *
   * @param message
   * @param e
   */
  public void log(Object message, Throwable e) {
    this.log(new Status(IStatus.ERROR, this.getBundleID(), IStatus.ERROR, "" + message, e)); //$NON-NLS-1$
  }

  /**
   * If debug is true this method prints an Exception to the log.
   *
   * @param aThrowable
   */
  public void debug(Throwable aThrowable) {
    if (this.debug) {
      this.log(new Status(IStatus.WARNING, this.getBundleID(), IStatus.WARNING, aThrowable.getMessage(), aThrowable)); //$NON-NLS-1$
    }
  }

  /**
   * @param message
   * @param t
   */
  public void debug(Object message, Throwable t) {
    if (this.debug) {
      this.log(new Status(IStatus.WARNING, this.getBundleID(), IStatus.WARNING, "" + message, t)); //$NON-NLS-1$
    }
  }

  /**
   * @param message
   */
  public void debug(Object message) {
    if (this.debug) {
      this.log(new Status(IStatus.WARNING, this.getBundleID(), IStatus.WARNING, "" + message, null)); //$NON-NLS-1$
    }
  }

  public void publicSaveDialogSettings() {
    saveDialogSettings();
  }

  public final void selectAndReveal(final IFile file) {
    this.selectAndReveal(file, null, IEditorTarget.TARGET_UNDEFINED);
  }

  public final void selectAndReveal(final IFile file, final String string, final int targetEditorID) {
    IWorkbenchWindow[] workbenchWindows = PlatformUI.getWorkbench().getWorkbenchWindows();
    for (int i = 0; i < workbenchWindows.length; i++) {
      final IWorkbenchPage workbenchPage = workbenchWindows[i].getActivePage();
      if (workbenchPage != null) {
        Display.getDefault().asyncExec(new Runnable() {
          public void run() {
            runSelectAndReveal(workbenchPage, file, string, targetEditorID);
          }
        });
      }
    }
  }

  protected void runSelectAndReveal(IWorkbenchPage workbenchPage, IFile file, String string, int targetEditorID) {
    try {
      IEditorPart editorPart = IDE.openEditor(workbenchPage, file, true);
      if (string != null && string.length() > 0 && editorPart != null && editorPart instanceof ITextEditor) {
        if (editorPart instanceof IEditorTarget) {
          IEditorTarget editorTarget = (IEditorTarget) editorPart;
          editorPart = editorTarget.switchTo(targetEditorID);
        }
        ITextEditor textEditor = (ITextEditor) editorPart;
        IDocumentProvider documentProvider = textEditor.getDocumentProvider();
        IDocument document = documentProvider.getDocument(textEditor.getEditorInput());
        // it's deprecated but the sse does not provide a
        // FindReplaceDocumentAdapter
        int offset = document.search(0, string, true, true, false);
        if (offset >= 0) {
          textEditor.selectAndReveal(offset, string.length());
        }
        // if (document instanceof IAdaptable) {
        // IAdaptable adaptable = (IAdaptable) document;
        // FindReplaceDocumentAdapter findReplaceDocumentAdapter =
        // (FindReplaceDocumentAdapter)
        // adaptable.getAdapter(FindReplaceDocumentAdapter.class);
        // if (findReplaceDocumentAdapter != null) {
        // IRegion region = findReplaceDocumentAdapter.find(0, string,
        // true, true, false, false);
        // if (region != null) {
        // textEditor.selectAndReveal(region.getOffset(),
        // region.getLength());
        // }
        // }
        // }
      }
    } catch (BadLocationException e) {
      this.log(e);
    } catch (PartInitException e) {
      this.log(e);
    }
  }

}
TOP

Related Classes of org.objectstyle.wolips.baseforuiplugins.AbstractBaseUIActivator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.