|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.api.debugger; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.List; /** Session visually represents one process or application. It should * be simple bean with properties like process ID, session name, etc. * All other functionality is deleagted to current debugger engine. * *
doAction (DebuggerEngine.ACTION_KILL)method on all * registerred DebuggerEngines. */ public void kill () { HashSet dead = new HashSet (Arrays.asList (engines)); Iterator i = dead.iterator (); while (i.hasNext ()) ((DebuggerEngine) i.next ()).getActionsManager (). doAction (ActionsManager.ACTION_KILL); } /** * Return DebuggerEngine registerred for given language or null. * * @return DebuggerEngine registerred for given language or null */ public DebuggerEngine getEngineForLanguage (String language) { int i, k = languages.length; for (i = 0; i < k; i++) if (languages [i].equals (language)) return engines [i]; return null; } /** * Sets current language for this session. Language should be refisterred * for this session. * * @param language current language * @see org.netbeans.spi.debugger.DebuggerEngineProvider */ public void setCurrentLanguage (String language) { int i, k = languages.length; for (i = 0; i < k; i++) { if (language.equals (languages [i])) { Object oldL = currentLanguage; currentLanguage = language; currentDebuggerEngine = engines [i]; pcs.firePropertyChange ( PROP_CURRENT_LANGUAGE, oldL, currentLanguage ); } } } // support methods ......................................................... Lookup getLookup () { return lookup; } void addLanguage ( String language, DebuggerEngine engine ) { // is pair already added? int i, k = languages.length; for (i = 0; i < k; i++) if (language.equals (languages [i])) { engines [i] = engine; return; } // add pair String[] newLanguages = new String [languages.length + 1]; DebuggerEngine[] newEngines = new DebuggerEngine [engines.length + 1]; System.arraycopy (languages, 0, newLanguages, 0, languages.length); System.arraycopy (engines, 0, newEngines, 0, engines.length); newLanguages [languages.length] = language; newEngines [engines.length] = engine; Object oldL = languages; languages = newLanguages; engines = newEngines; DebuggerManager.getDebuggerManager ().addEngine (engine); pcs.firePropertyChange ( PROP_SUPPORTED_LANGUAGES, oldL, languages ); // engine.addEngineListener ( // DebuggerEngineListener.PROP_ACTION_PERFORMED, // listener // ); if (currentLanguage == null) { setCurrentLanguage (language); } } void removeEngine ( DebuggerEngine engine ) { if (engines.length == 0) return; int i, k = engines.length; ArrayList newLanguages = new ArrayList (); ArrayList newEngines = new ArrayList (); for (i = 0; i < k; i++) if (!engine.equals (engines [i])) { newLanguages.add (languages [i]); newEngines.add (engines [i]); } String[] oldL = languages; languages = (String[]) newLanguages.toArray (new String [newLanguages.size ()]); engines = (DebuggerEngine[]) newEngines.toArray (new DebuggerEngine [newEngines.size ()]); DebuggerManager.getDebuggerManager ().removeEngine (engine); pcs.firePropertyChange ( PROP_SUPPORTED_LANGUAGES, oldL, languages ); } void removeLanguage ( String language, DebuggerEngine engine ) { int i, k = languages.length; for (i = 0; i < k; i++) if (language.equals (languages [i])) { if (engines [i] != engine) throw new IllegalArgumentException (); break; } if (i >= k) return; String[] newLanguages = new String [k - 1]; DebuggerEngine[] newEngines = new DebuggerEngine [k - 1]; if (i > 0) { System.arraycopy (languages, 0, newLanguages, 0, i); System.arraycopy (engines, 0, newEngines, 0, i); } System.arraycopy (languages, i + 1, newLanguages, i, k - i - 1); System.arraycopy (engines, i + 1, newEngines, i, k - i - 1); Object oldL = languages; languages = newLanguages; engines = newEngines; pcs.firePropertyChange ( PROP_SUPPORTED_LANGUAGES, oldL, languages ); k = engines.length; for (i = 0; i < k; i++) if (engines [i] == engine) return; DebuggerManager.getDebuggerManager ().removeEngine (engine); } /** * Returns string representation of this session. * * @return string representation of this session */ public String toString () { return "" + getClass ().getName () + " " + getLocationName () + ":" + getName (); } // listener support ........................................................ /** * Adds a property change listener. * * @param l the listener to add */ public void addPropertyChangeListener (PropertyChangeListener l) { pcs.addPropertyChangeListener (l); } /** * Removes a property change listener. * * @param l the listener to remove */ public void removePropertyChangeListener (PropertyChangeListener l) { pcs.removePropertyChangeListener (l); } /** * Adds a property change listener. * * @param propertyName a name of property to listen on * @param l the listener to add */ public void addPropertyChangeListener (String propertyName, PropertyChangeListener l) { pcs.addPropertyChangeListener (propertyName, l); } /** * Removes a property change listener. * * @param propertyName a name of property to stop listening on * @param l the listener to remove */ public void removePropertyChangeListener (String propertyName, PropertyChangeListener l) { pcs.removePropertyChangeListener (propertyName, l); } // innerclasses ............................................................ // private class Listener extends DebuggerEngineAdapter { // // public void actionPerformed ( // DebuggerEngine engine, // Object action, // boolean success // ) { // if (action != DebuggerEngine.ACTION_KILL) return; // removeEngine (engine); // } // // public void actionStateChanged ( // DebuggerEngine engine, // Object action, // boolean enabled // ) { // } // // } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.