📄 defaultactionelement.java
字号:
package org.j3de.ui.impl;
import java.awt.event.ActionEvent;
import java.rmi.RemoteException;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Group;
import javax.media.j3d.Node;
import javax.vecmath.Point3f;
import javax.swing.event.EventListenerList;
import org.j3de.events.J3deFocusListener;
import org.j3de.events.RemoteActionListener;
import org.j3de.exception.ExceptionHandler;
import org.j3de.ui.ActionElement;
import org.j3de.ui.Border3D;
import org.j3de.ui.UIElement;
import org.j3de.ui.UIElementMapper;
import org.j3de.ui.UILocalElement;
public class DefaultActionElement implements UILocalElement {
private UIElement contents;
private EventListenerList listenerList;
private UIElementMapper elementMapper;
private BranchGroup bg;
private BranchGroup contentsBranchGroup;
private ActionEvent actionEvent = null;
private ActionElement remoteActionElement;
private ActionElementUserData userData;
public DefaultActionElement(UIElementMapper elementMapper) {
this.listenerList = new EventListenerList();
this.elementMapper = elementMapper;
remoteActionElement = new RemoteActionElement();
userData = new ActionElementUserData();
bg = new BranchGroup();
bg.setCapability(Group.ALLOW_CHILDREN_READ);
bg.setCapability(Group.ALLOW_CHILDREN_WRITE);
bg.setCapability(Group.ALLOW_CHILDREN_EXTEND);
bg.setCapability(Group.ENABLE_PICK_REPORTING);
bg.setUserData(userData);
}
protected void fireActionEvent() {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length-2; i>=0; i-=2) {
if (listeners[i]==RemoteActionListener.class) {
// Lazily create the event:
if (actionEvent == null)
actionEvent = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null);
try {
((RemoteActionListener)listeners[i+1]).actionPerformed(actionEvent);
} catch (RemoteException e) {
ExceptionHandler.handleException(e);
}
}
}
}
public Node getNode() {
return bg;
}
public UIElement getRemoteElement() {
return remoteActionElement;
}
public void addBoundsChangeListener(ChangeListener listener) {
elementMapper.getLocal(contents).addBoundsChangeListener(listener);
}
public void removeBoundsChangeListener(ChangeListener listener) {
elementMapper.getLocal(contents).removeBoundsChangeListener(listener);
}
private class ActionElementUserData implements J3deFocusListener {
public void focusGained() {
fireActionEvent();
}
public void focusLost() {
}
}
private class RemoteActionElement implements ActionElement {
public void setUIElement(UIElement element) {
if (contentsBranchGroup != null)
contentsBranchGroup.detach();
contents = element;
contentsBranchGroup = new BranchGroup();
contentsBranchGroup.addChild(elementMapper.getLocal(contents).getNode());
bg.addChild(contentsBranchGroup);
}
public UIElement getUIElement() {
return contents;
}
public void addActionListener(RemoteActionListener l) {
listenerList.add(RemoteActionListener.class, l);
}
public void removeActionListener(RemoteActionListener l) {
listenerList.remove(RemoteActionListener.class, l);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -