Package net.sickill.off.jedit

Source Code of net.sickill.off.jedit.OffPlugin$TazWindowAdapter

package net.sickill.off.jedit;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.swing.JDialog;
import javax.swing.SwingUtilities;
import net.sickill.off.common.IDE;
import net.sickill.off.common.OffPanel;
import net.sickill.off.common.Settings;
import org.gjt.sp.jedit.EditPlugin;
import org.gjt.sp.jedit.View;
import org.gjt.sp.jedit.gui.DockableWindowManager;
import org.gjt.sp.jedit.jEdit;


public class OffPlugin extends EditPlugin {
 
    private static Settings settings = new JEditSettings();
 
  static Hashtable<View, OffPanel> viewsWithOff = new Hashtable<View, OffPanel>();
  static Hashtable<View, JEditDialog> dialogs = new Hashtable<View, JEditDialog>();
  static WindowAdapter windowAdapter;

    @Override
  public void start() {
    windowAdapter = new TazWindowAdapter();
    super.start();
  }

    @Override
  public void stop() {
    Enumeration<View> iter = viewsWithOff.keys();
    while (iter.hasMoreElements()) {
      View v = (View) iter.nextElement();
      v.removeWindowListener(windowAdapter);
    }
    viewsWithOff.clear();
    super.stop();
  }
 
  /**
   * @param view
   *            The View we activated Taz from.
   * @return A lightweight JPanel wrapper around the Taz instance for this
   *         View.
   */
  public static OffPanel getOffInstance(View view) {
    OffPanel off = (OffPanel)viewsWithOff.get(view);
    if (off == null) {
            IDE ide = new JEditIDE();
      off = new JEditOffPanel(ide, settings, new JEditProjectViewerProject(view));
      viewsWithOff.put(view, off);
      view.addWindowListener(windowAdapter);
    }
    return off;
  }

   public static JDialog showDialog(View view) { // TODO: change return value to void
        JEditDialog dialog = (JEditDialog)dialogs.get(view);
    if (dialog == null) {
      dialog = new JEditDialog(view, getOffInstance(view));
      dialogs.put(view, dialog);
    }
        dialog.showDialog();
    return dialog;
  }

    static void closeDialogsAndPanels() {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        DockableWindowManager dwm = jEdit.getActiveView().getDockableWindowManager();
        dwm.hideDockableWindow("openfilefastdockable");
      }
    });
        for (JDialog dialog : dialogs.values()) {
            dialog.dispose();
        }
        dialogs.clear();
    }

  class TazWindowAdapter extends WindowAdapter {
        // fired when JEdit View is closed
    public void windowClosed(WindowEvent evt) {
            viewsWithOff.remove(evt.getWindow());
      JDialog dialog = (JDialog)dialogs.remove(evt.getWindow());
      if (dialog != null) {
        dialog.dispose();
        dialog = null;
        System.gc();
      }
    }
  }

}// End of class OffPlugin
TOP

Related Classes of net.sickill.off.jedit.OffPlugin$TazWindowAdapter

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.