Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00017 package com.generalrobotix.ui.view;
00018
00019 import java.util.ArrayList;
00020 import java.util.Iterator;
00021 import java.util.List;
00022
00023 import org.eclipse.swt.SWT;
00024 import org.eclipse.swt.widgets.Composite;
00025
00026 import com.generalrobotix.ui.GrxBaseItem;
00027 import com.generalrobotix.ui.GrxBasePlugin;
00028 import com.generalrobotix.ui.GrxBaseView;
00029 import com.generalrobotix.ui.GrxBaseViewPart;
00030 import com.generalrobotix.ui.GrxPluginManager;
00031 import com.generalrobotix.ui.item.GrxCollisionPairItem;
00032 import com.generalrobotix.ui.item.GrxModelItem;
00033 import com.generalrobotix.ui.view.simulation.ControllerPanel;
00034
00035 @SuppressWarnings("serial")
00036 public class GrxControllerView extends GrxBaseView {
00037 private ControllerPanel controllerPane_;
00038 private List<GrxModelItem> currentModels_ = new ArrayList<GrxModelItem>();
00039 private List<GrxCollisionPairItem> currentCollisionPairs_ = new ArrayList<GrxCollisionPairItem>();
00040
00041 public GrxControllerView(String name, GrxPluginManager manager, GrxBaseViewPart vp, Composite parent) {
00042 super(name, manager, vp, parent);
00043
00044 controllerPane_ = new ControllerPanel(composite_, SWT.NONE, manager_);
00045 currentModels_ = manager_.<GrxModelItem>getSelectedItemList(GrxModelItem.class);
00046 controllerPane_.updateRobots(currentModels_);
00047 controllerPane_.setEnabled(true);
00048
00049 currentCollisionPairs_ = manager_.<GrxCollisionPairItem>getSelectedItemList(GrxCollisionPairItem.class);
00050
00051 Iterator<GrxModelItem> it = currentModels_.iterator();
00052 while(it.hasNext()) {
00053 it.next().addObserver(this);
00054 }
00055 manager_.registerItemChangeListener(this, GrxModelItem.class);
00056 manager_.registerItemChangeListener(this, GrxCollisionPairItem.class);
00057 }
00058
00059 public void setUp(){
00060 Iterator<GrxModelItem> it = currentModels_.iterator();
00061 while(it.hasNext())
00062 it.next().deleteObserver(this);
00063 currentModels_ = manager_.<GrxModelItem>getSelectedItemList(GrxModelItem.class);
00064 currentCollisionPairs_ = manager_.<GrxCollisionPairItem>getSelectedItemList(GrxCollisionPairItem.class);
00065 controllerPane_.updateRobots(currentModels_);
00066 it = currentModels_.iterator();
00067 while(it.hasNext())
00068 it.next().addObserver(this);
00069
00070 }
00071
00072 public void registerItemChange(GrxBaseItem item, int event){
00073 if(item instanceof GrxModelItem){
00074 GrxModelItem mitem = (GrxModelItem)item;
00075 switch(event){
00076 case GrxPluginManager.SELECTED_ITEM:
00077 if(!currentModels_.contains(mitem)){
00078 currentModels_.add(mitem);
00079 controllerPane_.updateRobots(currentModels_);
00080 mitem.addObserver(this);
00081 }
00082 break;
00083 case GrxPluginManager.REMOVE_ITEM:
00084 case GrxPluginManager.NOTSELECTED_ITEM:
00085 if(currentModels_.contains(mitem)){
00086 currentModels_.remove(mitem);
00087 controllerPane_.updateRobots(currentModels_);
00088 mitem.deleteObserver(this);
00089 }
00090 break;
00091 default:
00092 break;
00093 }
00094 }else if(item instanceof GrxCollisionPairItem){
00095 GrxCollisionPairItem citem = (GrxCollisionPairItem)item;
00096 switch(event){
00097 case GrxPluginManager.SELECTED_ITEM:
00098 case GrxPluginManager.ADD_ITEM:
00099 if(!currentCollisionPairs_.contains(citem)){
00100 currentCollisionPairs_.add(citem);
00101 controllerPane_.updateRobots(currentModels_);
00102 }
00103 break;
00104 case GrxPluginManager.REMOVE_ITEM:
00105 case GrxPluginManager.NOTSELECTED_ITEM:
00106 if(currentCollisionPairs_.contains(citem)){
00107 currentCollisionPairs_.remove(citem);
00108 controllerPane_.updateRobots(currentModels_);
00109 }
00110 break;
00111 default:
00112 break;
00113 }
00114 }
00115 }
00116
00117 public void update(GrxBasePlugin plugin, Object... arg) {
00118
00119 if(currentModels_.contains(plugin)){
00120 if((String)arg[0]=="PropertyChange"){
00121 if((String)arg[1]=="isRobot")
00122 controllerPane_.updateRobots(currentModels_);
00123 }
00124 }
00125 }
00126
00127 public void shutdown() {
00128 Iterator<GrxModelItem> it = currentModels_.iterator();
00129 while(it.hasNext()) {
00130 it.next().deleteObserver(this);
00131 }
00132
00133 manager_.removeItemChangeListener(this, GrxModelItem.class);
00134 manager_.removeItemChangeListener(this, GrxCollisionPairItem.class);
00135 }
00136
00137 public void updateTableFont(){
00138 controllerPane_.updateTableFont();
00139 }
00140 }