GrxGraphView.java
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008, AIST, the University of Tokyo and General Robotix Inc.
3  * All rights reserved. This program is made available under the terms of the
4  * Eclipse Public License v1.0 which accompanies this distribution, and is
5  * available at http://www.eclipse.org/legal/epl-v10.html
6  * Contributors:
7  * General Robotix Inc.
8  * National Institute of Advanced Industrial Science and Technology (AIST)
9  */
10 /*
11  * GrxGraphView.java
12  *
13  * Copyright (C) 2007 GeneralRobotix, Inc.
14  * All Rights Reserved
15  *
16  * @author Yuichiro Kawasumi (General Robotix, Inc.)
17  */
18 
19 package com.generalrobotix.ui.view;
20 
21 import java.util.ArrayList;
22 import java.util.List;
23 
24 import org.eclipse.jface.resource.StringConverter;
25 import org.eclipse.swt.SWT;
26 import org.eclipse.swt.graphics.RGB;
27 import org.eclipse.swt.widgets.Composite;
28 
46 
47 @SuppressWarnings("serial")
48 public class GrxGraphView extends GrxBaseView {
49  public static final String TITLE = "Graph";
50  public static final int NumOfGraph = 3;
51 
52  private GrxWorldStateItem currentWorld_ = null;
53  private GrxSimulationItem simItem_ = null;
54  private GrxGraphItem currentGraph_ = null;
55  private List<GrxModelItem> currentModels_ = new ArrayList<GrxModelItem>();
58 
59  public GrxGraphView(String name, GrxPluginManager manager, GrxBaseViewPart vp, Composite parent) {
60  super(name, manager, vp, parent);
61  isScrollable_ = false;
62  graphManager_ = new TrendGraphModel(NumOfGraph );
63 
64  gpanel_ = new GraphPanel(manager_, graphManager_, composite_ );
65  setScrollMinSize(SWT.DEFAULT,SWT.DEFAULT);
66  graphManager_.setPanel(gpanel_);
67 
68  setUp();
69  manager_.registerItemChangeListener(this, GrxSimulationItem.class);
70  manager_.registerItemChangeListener(this, GrxWorldStateItem.class);
71  manager_.registerItemChangeListener(this, GrxGraphItem.class);
72  manager_.registerItemChangeListener(this, GrxModelItem.class);
73  }
74 
75  public void setUp(){
76  if(currentGraph_!=null){
77  _updateGraph(null);
78  }
79  currentGraph_ = manager_.<GrxGraphItem>getSelectedItem(GrxGraphItem.class, null);
80  if(currentGraph_!=null){
81  _updateGraph(currentGraph_);
82  }
83  if(currentWorld_!=null){
84  currentWorld_.deleteObserver(this);
85  currentWorld_.deletePosObserver(this);
86  }
87  currentWorld_ = manager_.<GrxWorldStateItem>getSelectedItem(GrxWorldStateItem.class, null);
88  if(currentWorld_!=null){
89  currentWorld_.addObserver(this);
90  currentWorld_.addPosObserver(this);
91  graphManager_.setWorldState(currentWorld_);
92  }else
93  graphManager_.setWorldState(null);
94  graphManager_.updateGraph();
95 
96  if(simItem_!=null)
97  simItem_.deleteObserver(this);
98  simItem_ = manager_.<GrxSimulationItem>getSelectedItem(GrxSimulationItem.class, null);
99  if(simItem_!=null)
100  simItem_.addObserver(this);
101 
102  currentModels_ = manager_.<GrxModelItem>getSelectedItemList(GrxModelItem.class);
103  gpanel_.setModelList(currentModels_);
104  }
105 
106  public void registerItemChange(GrxBaseItem item, int event){
107  if(item instanceof GrxWorldStateItem){
108  GrxWorldStateItem worldStateItem = (GrxWorldStateItem) item;
109  switch(event){
111  if(currentWorld_!=worldStateItem){
112  currentWorld_ = worldStateItem;
113  currentWorld_.addObserver(this);
114  currentWorld_.addPosObserver(this);
115  graphManager_.setWorldState(currentWorld_);
116  graphManager_.updateGraph();
117  }
118  break;
121  if(currentWorld_==worldStateItem){
122  currentWorld_.deleteObserver(this);
123  currentWorld_.deletePosObserver(this);
124  currentWorld_ = null;
125  graphManager_.setWorldState(null);
126  graphManager_.updateGraph();
127  }
128  break;
129  default:
130  break;
131  }
132  }else if(item instanceof GrxGraphItem){
133  GrxGraphItem graphItem = (GrxGraphItem) item;
134  switch(event){
136  _updateGraph(graphItem);
137  currentGraph_ = graphItem;
138  break;
141  _updateGraph(null);
142  currentGraph_ = null;
143  break;
144  default:
145  break;
146  }
147  }else if(item instanceof GrxModelItem){
148  GrxModelItem modelItem = (GrxModelItem) item;
149  switch(event){
151  if(!currentModels_.contains(modelItem)){
152  currentModels_.add(modelItem);
153  gpanel_.setModelList(currentModels_);
154  }
155  break;
158  if(currentModels_.contains(modelItem)){
159  currentModels_.remove(modelItem);
160  gpanel_.setModelList(currentModels_);
161  }
162  break;
163  default:
164  break;
165  }
166  }else if(item instanceof GrxSimulationItem){
168  switch(event){
170  if(simItem_!=simItem){
171  simItem_ = simItem;
172  simItem_.addObserver(this);
173  }
174  break;
177  if(simItem_==simItem){
178  simItem_.deleteObserver(this);
179  simItem_ = null;
180  }
181  break;
182  default:
183  break;
184  }
185  }
186  }
187 
188 
189  private void _updateGraph(GrxBasePlugin p) {
190  graphManager_.clearDataItem();
191 
192  if (p == null) {
193  gpanel_.setEnabledRangeButton(false);
194  graphManager_.updateGraph();
195  return;
196  }
197 
198  gpanel_.setEnabledRangeButton(true);
199 
200  for (int i = 0; i < graphManager_.getNumGraph(); i++) {
201  String graphName = "Graph" + i;
202  String header = graphName + ".";
203  String ditems = p.getStr(header + "dataItems");
204  if (ditems == null)
205  continue;
206 
207  TrendGraph tgraph = graphManager_.getTrendGraph(i);
208  List<String> addedList = new ArrayList<String>();
209  String[] str = ditems.split(",");
210  for (int j = 0; j < str.length; j++) {
211  if (str[j].equals(""))
212  continue;
213  String object= p.getStr(header + str[j] + ".object");
214  String node = p.getStr(header + str[j] + ".node");
215  String attr = p.getStr(header + str[j] + ".attr");
216  int index = p.getInt(header + str[j] + ".index", -1);
217  String sColor= p.getStr(header + str[j] + ".color");
218  RGB color=null;
219  if(sColor!=null)
220  color=StringConverter.asRGB(sColor);
221  String legend= p.getStr(header + str[j] + ".legend");
222  String type = "";
223  if(attr.equals("angle"))
224  type = "Joint";
225  else if (attr.equals("force"))
226  type = "ForceSensor";
227  else if (attr.equals("torque"))
228  type = "ForceSensor";
229  else if (attr.equals("acceleration"))
230  type = "AccelerationSensor";
231  else if (attr.equals("angularVelocity"))
232  type = "Gyro";
233 
234  DataItem ditem = new DataItem(object, node, attr, index, type);
235  if (!addedList.contains(ditem.toString())){
236  addedList.add(ditem.toString());
237  tgraph.addDataItem(new DataItemInfo(ditem, color, legend));
238  }
239  }
240 
241  double[] vRange = p.getDblAry(header + "vRange", null);
242  if (vRange != null) {
243  tgraph.setRange(vRange[0], vRange[1]);
244  }
245  }
246 
247  double[] timeRange = p.getDblAry("timeRange", new double[]{1.0, 0.8});
248  graphManager_.setRangeAndPos(timeRange[0], timeRange[1]);
249 
250  graphManager_.updateGraph();
251  }
252 
253  private boolean isSimulation = false;
254  public void update(GrxBasePlugin plugin, Object... arg) {
255  if(simItem_==plugin){
256  if((String)arg[0]=="StartSimulation"){ //$NON-NLS-1$
257  double step = currentWorld_.getDbl("logTimeStep", 0.001);
258  graphManager_.setStepTime((long)(1000000*step));
259  graphManager_.initGetData();
260  isSimulation = true;
261  }else if((String)arg[0]=="StopSimulation"){
262  isSimulation = false;
263  graphManager_.setTotalTime(currentWorld_.getTime(currentWorld_.getLogSize()-1));
264  }
265  } else if(currentWorld_==plugin) {
266  if((String)arg[0]=="ClearLog"){ //$NON-NLS-1$
267  graphManager_.setWorldState(currentWorld_);
268  graphManager_.updateGraph();
269  }else if((String)arg[0]=="LoadLog"){
270  graphManager_.setWorldState(currentWorld_);
271  graphManager_.updateGraph();
272  }
273  }
274  }
275 
276  public void updatePosition(GrxBasePlugin plugin, Integer arg_pos){
277  if(currentWorld_!=plugin) return;
278 
279  int pos = arg_pos.intValue();
280  WorldStateEx state = currentWorld_.getValue(pos);
281  if (state == null){
282  updateGraph(new Time(0));
283  }else{
284  Time time_ = new Time();
285  time_.set(state.time);
286  updateGraph(time_);
287  }
288  }
289 
290  private void updateGraph(Time time_){
291  if(isSimulation)
292  graphManager_.setTotalTime(((GrxTimeSeriesItem)currentWorld_).getTime(currentWorld_.getLogSize()-1));
293  graphManager_.worldTimeChanged(time_);
294  }
295 
296  public void shutdown() {
297  manager_.removeItemChangeListener(this, GrxGraphItem.class);
298  manager_.removeItemChangeListener(this, GrxModelItem.class);
299  manager_.removeItemChangeListener(this, GrxWorldStateItem.class);
300  manager_.removeItemChangeListener(this, GrxSimulationItem.class);
301  if(currentWorld_!=null)
302  {
303  currentWorld_.deleteObserver(this);
304  currentWorld_.deletePosObserver(this);
305  }
306 
307  if(simItem_!=null)
308  simItem_.deleteObserver(this);
309  }
310 
311 }
com.generalrobotix.ui.view.GrxGraphView.graphManager_
TrendGraphModel graphManager_
Definition: GrxGraphView.java:56
com.generalrobotix.ui.item.GrxWorldStateItem.addPosObserver
void addPosObserver(GrxPositionObserver v)
Definition: GrxWorldStateItem.java:1101
i
png_uint_32 i
Definition: png.h:2732
com.generalrobotix.ui.view
com.generalrobotix.ui.view.graph.TrendGraphModel.setTotalTime
void setTotalTime(double totalTime)
Definition: TrendGraphModel.java:176
com.generalrobotix.ui.view.graph.TrendGraphModel.setWorldState
void setWorldState(GrxWorldStateItem world)
Definition: TrendGraphModel.java:453
com.generalrobotix.ui.GrxTimeSeriesItem
Definition: GrxTimeSeriesItem.java:27
com.generalrobotix.ui.view.graph.TrendGraphModel
Definition: TrendGraphModel.java:31
com.generalrobotix.ui.view.GrxGraphView.setUp
void setUp()
Definition: GrxGraphView.java:75
com.generalrobotix.ui.view.graph.TrendGraphModel.worldTimeChanged
void worldTimeChanged(Time time)
Definition: TrendGraphModel.java:118
com.generalrobotix.ui.view.graph.GraphPanel
Definition: GraphPanel.java:47
com.generalrobotix.ui.item.GrxWorldStateItem.getTime
Double getTime(int pos)
Definition: GrxWorldStateItem.java:1040
arg
char * arg
Definition: cdjpeg.h:136
com.generalrobotix.ui.view.graph.Time.set
void set(Time time)
Definition: Time.java:72
com.generalrobotix.ui.view.graph.TrendGraphModel.updateGraph
void updateGraph()
Definition: TrendGraphModel.java:657
com.generalrobotix.ui.GrxBasePlugin.addObserver
void addObserver(GrxObserver v)
Definition: GrxBasePlugin.java:491
com.generalrobotix.ui.GrxPluginManager.SELECTED_ITEM
static final int SELECTED_ITEM
Definition: GrxPluginManager.java:97
com.generalrobotix.ui.view.graph.DataItem.toString
String toString()
Definition: DataItem.java:77
type
png_infop png_charp png_int_32 png_int_32 int * type
Definition: png.h:2330
com.generalrobotix.ui.GrxBaseView
Definition: GrxBaseView.java:38
com.generalrobotix.ui.item.GrxGraphItem
Definition: GrxGraphItem.java:25
com.generalrobotix.ui.item.GrxWorldStateItem.deletePosObserver
void deletePosObserver(GrxPositionObserver v)
Definition: GrxWorldStateItem.java:1105
com.generalrobotix.ui.view.graph
Definition: AttributeInfo.java:10
com.generalrobotix.ui.view.graph.TrendGraph.setRange
void setRange(double base, double extent)
Definition: TrendGraph.java:271
com.generalrobotix.ui.view.graph.TrendGraphModel.setRangeAndPos
void setRangeAndPos(double timeRange, double markerPos)
Definition: TrendGraphModel.java:187
com.generalrobotix.ui.view.graph.TrendGraph
Definition: TrendGraph.java:22
com.generalrobotix.ui.item
Definition: GrxCollisionPairItem.java:19
com.generalrobotix.ui.util.GrxConfigBundle.getInt
final Integer getInt(String key, Integer defaultVal)
get integer value associated to key
Definition: GrxConfigBundle.java:134
com.generalrobotix.ui.item.GrxWorldStateItem.WorldStateEx
Definition: GrxWorldStateItem.java:1117
com.generalrobotix.ui.util.GrxConfigBundle.getDblAry
final double[] getDblAry(String key, double[] defaultVal)
get double array associated to key
Definition: GrxConfigBundle.java:268
com.generalrobotix.ui.item.GrxSimulationItem
Definition: GrxSimulationItem.java:74
com.generalrobotix.ui.view.graph.TrendGraphModel.getNumGraph
int getNumGraph()
Definition: TrendGraphModel.java:101
com.generalrobotix.ui.view.GrxGraphView.registerItemChange
void registerItemChange(GrxBaseItem item, int event)
Definition: GrxGraphView.java:106
com.generalrobotix.ui.GrxTimeSeriesItem.getLogSize
final int getLogSize()
Definition: GrxTimeSeriesItem.java:177
com.generalrobotix.ui.item.GrxWorldStateItem
Definition: GrxWorldStateItem.java:53
com.generalrobotix.ui.GrxBasePlugin.deleteObserver
void deleteObserver(GrxObserver v)
Definition: GrxBasePlugin.java:495
com.generalrobotix.ui.util.GrxConfigBundle.getStr
final String getStr(String key)
get value associated to keyword
Definition: GrxConfigBundle.java:78
com.generalrobotix.ui.item.GrxWorldStateItem.getValue
WorldStateEx getValue()
Definition: GrxWorldStateItem.java:490
com.generalrobotix.ui.view.GrxGraphView
Definition: GrxGraphView.java:48
com.generalrobotix.ui.view.graph.TrendGraphModel.setPanel
void setPanel(GraphPanel gPanel)
Definition: TrendGraphModel.java:676
name
png_infop png_charpp name
Definition: png.h:2379
com.generalrobotix.ui.view.graph.DataItem
Definition: DataItem.java:18
com.generalrobotix.ui.view.GrxGraphView.updateGraph
void updateGraph(Time time_)
Definition: GrxGraphView.java:290
com.generalrobotix.ui.GrxPluginManager.NOTSELECTED_ITEM
static final int NOTSELECTED_ITEM
Definition: GrxPluginManager.java:98
com.generalrobotix.ui.view.graph.GraphPanel.setModelList
void setModelList(List< GrxModelItem > list)
Definition: GraphPanel.java:461
com.generalrobotix.ui.view.GrxGraphView.shutdown
void shutdown()
Definition: GrxGraphView.java:296
com.generalrobotix.ui.view.GrxGraphView.updatePosition
void updatePosition(GrxBasePlugin plugin, Integer arg_pos)
Definition: GrxGraphView.java:276
autoplay.item
item
Definition: autoplay.py:11
com.generalrobotix
com.generalrobotix.ui.view.GrxGraphView._updateGraph
void _updateGraph(GrxBasePlugin p)
Definition: GrxGraphView.java:189
com.generalrobotix.ui.view.graph.GraphPanel.setEnabledRangeButton
void setEnabledRangeButton(boolean b)
Definition: GraphPanel.java:71
com.generalrobotix.ui.GrxPluginManager
プラグイン管理クラス GrxUIの核になるクラス。プラグインのロード等の、初期化を実行する。 プラグインとそのアイテムのマップ(::pluginMap_)、プラグインとその情報のマップ(::pinfoM...
Definition: GrxPluginManager.java:79
com.generalrobotix.ui.view.graph.Time
Definition: Time.java:21
com.generalrobotix.ui.view.graph.TrendGraphModel.initGetData
void initGetData()
Definition: TrendGraphModel.java:483
com.generalrobotix.ui.GrxPluginManager.REMOVE_ITEM
static final int REMOVE_ITEM
Definition: GrxPluginManager.java:96
com.generalrobotix.ui.view.graph.TrendGraphModel.getTrendGraph
TrendGraph getTrendGraph(int index)
Definition: TrendGraphModel.java:105
com.generalrobotix.ui.view.GrxGraphView.update
void update(GrxBasePlugin plugin, Object... arg)
Definition: GrxGraphView.java:254
com.generalrobotix.ui.GrxBaseItem
Definition: GrxBaseItem.java:35
com
com.generalrobotix.ui.item.GrxModelItem
item corresponds to a robot model
Definition: GrxModelItem.java:52
com.generalrobotix.ui.util.GrxConfigBundle.getDbl
final Double getDbl(String key, Double defaultVal)
get double value associated to key
Definition: GrxConfigBundle.java:212
com.generalrobotix.ui.view.GrxGraphView.gpanel_
GraphPanel gpanel_
Definition: GrxGraphView.java:57
com.generalrobotix.ui.view.GrxGraphView.GrxGraphView
GrxGraphView(String name, GrxPluginManager manager, GrxBaseViewPart vp, Composite parent)
Definition: GrxGraphView.java:59
com.generalrobotix.ui.view.graph.TrendGraphModel.setStepTime
void setStepTime(long stepTime)
Definition: TrendGraphModel.java:141
com.generalrobotix.ui.view.graph.TrendGraph.addDataItem
int addDataItem(DataItemInfo di)
Definition: TrendGraph.java:143
com.generalrobotix.ui.item.GrxWorldStateItem.WorldStateEx.time
double time
Definition: GrxWorldStateItem.java:1118
com.generalrobotix.ui
com.generalrobotix.ui.GrxBaseViewPart
Definition: GrxBaseViewPart.java:8
com.generalrobotix.ui.view.graph.TrendGraphModel.clearDataItem
void clearDataItem()
Definition: TrendGraphModel.java:669
com.generalrobotix.ui.GrxBasePlugin
Definition: GrxBasePlugin.java:50
com.generalrobotix.ui.view.graph.DataItemInfo
Definition: DataItemInfo.java:21


openhrp3
Author(s): AIST, General Robotix Inc., Nakamura Lab of Dept. of Mechano Informatics at University of Tokyo
autogenerated on Wed Sep 7 2022 02:51:02