⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defaultactionelement.java

📁 Java 3D Desktop Environment旨在使用Java 3D来创建一个3D桌面环境。功能包括:分布式的应用程序
💻 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 + -