|
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-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.openide.util.actions;
import org.openide.util.lookup.AbstractLookup;
import org.openide.util.lookup.InstanceContent;
import org.openide.windows.TopComponent;
import org.openide.nodes.Node;
import java.util.Set;
import org.openide.util.actions.SystemAction;
import java.awt.event.ActionEvent;
import javax.swing.Action;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import org.openide.windows.WindowManager;
import javax.swing.JFrame;
import java.awt.Frame;
import org.openide.windows.Workspace;
import org.openide.util.NotImplementedException;
import java.awt.Image;
import java.beans.PropertyChangeSupport;
import org.openide.util.Lookup;
import java.util.ArrayList;
/** Utilities for actions tests.
* @author Jesse Glick
*/
public abstract class ActionsInfraHid {
private ActionsInfraHid() {}
public static final UsefulThings UT;
static {
String tm = System.getProperty("org.openide.TopManager");
if (tm != null) throw new IllegalStateException("TopManager was initialized already: " + tm);
String lookup = System.getProperty("org.openide.util.Lookup");
if (lookup != null && !lookup.equals(UsefulLookup.class.getName())) throw new IllegalStateException("Already had a Lookup installed: " + lookup);
System.setProperty("org.openide.util.Lookup", UsefulLookup.class.getName());
UT = new UsefulThings();
Lookup l = Lookup.getDefault();
if (!(l instanceof UsefulLookup)) throw new IllegalStateException(Lookup.getDefault().toString());
if (l.lookup(TopComponent.Registry.class) == null) throw new IllegalStateException("no TC.R");
//if (l.lookup(WindowManager.class) == null) throw new IllegalStateException("no WindowManager");
//if (CallbackSystemAction.getRegistry() == null) throw new IllegalStateException("no TC.R again!");
}
public static void main(String[] args) {
System.err.println("ActionsInfraHid OK.");
}
/** Lookup which provides a TC.Registry and ActionManager.
*/
public static final class UsefulLookup extends AbstractLookup {
public UsefulLookup() {
super(getContent());
}
private static AbstractLookup.Content getContent() {
InstanceContent c = new InstanceContent();
c.add(UT);
c.add(ActionsInfraHid.class.getClassLoader());
return c;
}
}
/** An action manager and top component registry.
*/
public static final class UsefulThings implements TopComponent.Registry, org.openide.util.ContextGlobalProvider {
// Registry:
private TopComponent activated;
/** instances to keep */
private InstanceContent ic = new InstanceContent ();
/** lookup */
private Lookup lookup = new AbstractLookup (ic);
/** changes */
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener l) {
pcs.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
pcs.removePropertyChangeListener(l);
}
private void firePropertyChange(String p, Object o, Object n) {
pcs.firePropertyChange(p, o, n);
}
public TopComponent getActivated() {
return activated;
}
public void setActivated(TopComponent nue) {
TopComponent old = activated;
activated = nue;
firePropertyChange(PROP_ACTIVATED, old, nue);
updateLookup ();
}
private Node[] activatedNodes = new Node[0];
private Node[] currentNodes = null;
public Node[] getActivatedNodes() {
return activatedNodes;
}
public Node[] getCurrentNodes() {
return currentNodes;
}
public void setCurrentNodes(Node[] nue) {
if (nue != null) {
Node[] old = activatedNodes;
activatedNodes = nue;
firePropertyChange(PROP_ACTIVATED_NODES, old, nue);
}
Node[] old = currentNodes;
currentNodes = nue;
firePropertyChange(PROP_CURRENT_NODES, old, nue);
updateLookup ();
}
private Set opened = null;
public Set getOpened() {
return opened;
}
public void setOpened(Set nue) {
Set old = opened;
opened = nue;
firePropertyChange(PROP_OPENED, old, nue);
}
private void updateLookup () {
ArrayList items = new ArrayList ();
if (currentNodes != null) {
for (int i = 0; i < currentNodes.length; i++) {
items.add (new IPair (currentNodes[i]));
}
} else {
items.add (IPair.NULL_NODES);
}
if (activated != null) {
items.add (new IPair (activated.getActionMap ()));
}
ic.setPairs (items);
}
//
// ContextGlobalProvider
//
public Lookup createGlobalContext() {
return lookup;
}
}
/** Prop listener that will tell you if it gets a change.
*/
public static final class WaitPCL implements PropertyChangeListener {
/** whether a change has been received, and if so count */
public int gotit = 0;
/** optional property name to filter by (if null, accept any) */
private final String prop;
public WaitPCL(String p) {
prop = p;
}
public synchronized void propertyChange(PropertyChangeEvent evt) {
if (prop == null || prop.equals(evt.getPropertyName())) {
gotit++;
notifyAll();
}
}
public boolean changed() {
return changed(1500);
}
public synchronized boolean changed(int timeout) {
if (gotit > 0) {
return true;
}
try {
wait(timeout);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
return gotit > 0;
}
}
// Stolen from RequestProcessorTest.
public static void doGC() {
doGC(10);
}
public static void doGC(int count) {
ArrayList l = new ArrayList(count);
while (count-- > 0) {
System.gc();
System.runFinalization();
l.add(new byte[1000]);
}
}
private static final class IPair extends AbstractLookup.Pair {
private Object obj;
public static final IPair NULL_NODES = new IPair (
new org.openide.nodes.AbstractNode (org.openide.nodes.Children.LEAF)
);
public IPair (Object obj) {
this.obj = obj;
}
protected boolean creatorOf(Object obj) {
return this.obj == obj;
}
public String getDisplayName() {
return obj.toString ();
}
public String getId() {
if (this == NULL_NODES) {
return "none"; // NOI18N
}
return obj.toString ();
}
public Object getInstance() {
if (this == NULL_NODES) {
return null;
}
return obj;
}
public Class getType() {
return obj.getClass();
}
protected boolean instanceOf(Class c) {
return c.isInstance(obj);
}
} // end of IPair
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 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.