From 89fb6629d04030977a91c4f25789f0ce2baa17f5 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Sun, 15 Nov 2015 22:15:37 +0100 Subject: [PATCH] Finished version 1.0 - added relation navigation - improved about dialog --- .../database/sqlite/RelationTypeFactory.java | 28 -- .../database/sqlite/SQLiteDbLoader.java | 12 +- .../scviewer/database/sqlite/TxStream.java | 14 +- .../database/text/TextDbLoader.groovy | 10 +- .../database/swt/internal/ArrowPainter.java | 151 ++++--- .../database/swt/internal/WaveformCanvas.java | 15 +- .../database/swt/internal/WaveformViewer.java | 174 ++++---- .../scviewer/database/ui/IWaveformViewer.java | 10 +- .../scviewer/database/ui/WaveformColors.java | 2 +- .../scviewer/database/vcd/VCDDbLoader.java | 8 + com.minres.scviewer.database/.classpath | 4 +- .../minres/scviewer/database/IWaveformDb.java | 2 + .../scviewer/database/IWaveformDbLoader.java | 3 + .../scviewer/database/RelationType.java | 22 +- .../database/internal/WaveformDb.java | 10 + .../.settings/org.eclipse.jdt.core.prefs | 5 + .../Application.e4xmi | 89 +++-- .../icons/Minres_logo.png | Bin 0 -> 7978 bytes .../icons/SCViewer.icns | Bin 46830 -> 0 bytes .../icons/SCViewer.ico | Bin 216870 -> 0 bytes .../icons/SCViewer_128x32.png | Bin 6444 -> 0 bytes .../icons/SCViewer_16x32.png | Bin 3715 -> 0 bytes .../icons/SCViewer_256x32.png | Bin 8969 -> 0 bytes .../icons/SCViewer_32x32.png | Bin 4251 -> 0 bytes .../icons/SCViewer_48x32.png | Bin 4845 -> 0 bytes .../icons/SCViewer_512.png | Bin 12776 -> 0 bytes .../icons/SCViewer_64x32.png | Bin 5206 -> 0 bytes .../icons/SCViewer_logo.png | Bin 0 -> 37882 bytes .../icons/empty.png | Bin 0 -> 3168 bytes .../icons/scviewer.gif | Bin 118 -> 0 bytes .../icons/tick.png | Bin 0 -> 537 bytes .../elements/NavigateContribution.java | 76 ++++ .../elements/RelationTypeToolControl.java | 109 +++++ .../e4/application/handlers/AboutHandler.java | 5 +- .../handlers/AddWaveformHandler.java | 29 +- .../handlers/SetRelationTypeHandler.java | 35 ++ .../e4/application/parts/AboutDialog.java | 183 +++++++++ .../e4/application/parts/DesignBrowser.java | 377 +++++++++++++++++- .../application/parts/WaveformListPart.java | 327 --------------- .../application/parts/WaveformViewerPart.java | 68 +++- .../preferences/DefaultValuesInitializer.java | 3 +- .../SCViewer (restart).launch | 2 +- .../icons/SCViewer.png | Bin 12776 -> 105786 bytes com.opcoach.e4.preferences/.classpath | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 11 +- .../e4/preferences/ScopedPreferenceStore.java | 2 +- .../internal/E4PreferenceRegistry.java | 3 +- 47 files changed, 1201 insertions(+), 590 deletions(-) delete mode 100644 com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/RelationTypeFactory.java create mode 100644 com.minres.scviewer.e4.application/icons/Minres_logo.png delete mode 100644 com.minres.scviewer.e4.application/icons/SCViewer.icns delete mode 100644 com.minres.scviewer.e4.application/icons/SCViewer.ico delete mode 100644 com.minres.scviewer.e4.application/icons/SCViewer_128x32.png delete mode 100644 com.minres.scviewer.e4.application/icons/SCViewer_16x32.png delete mode 100644 com.minres.scviewer.e4.application/icons/SCViewer_256x32.png delete mode 100644 com.minres.scviewer.e4.application/icons/SCViewer_32x32.png delete mode 100644 com.minres.scviewer.e4.application/icons/SCViewer_48x32.png delete mode 100644 com.minres.scviewer.e4.application/icons/SCViewer_512.png delete mode 100644 com.minres.scviewer.e4.application/icons/SCViewer_64x32.png create mode 100644 com.minres.scviewer.e4.application/icons/SCViewer_logo.png create mode 100644 com.minres.scviewer.e4.application/icons/empty.png delete mode 100644 com.minres.scviewer.e4.application/icons/scviewer.gif create mode 100644 com.minres.scviewer.e4.application/icons/tick.png create mode 100644 com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/elements/NavigateContribution.java create mode 100644 com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/elements/RelationTypeToolControl.java create mode 100644 com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/SetRelationTypeHandler.java create mode 100644 com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/AboutDialog.java delete mode 100644 com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformListPart.java diff --git a/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/RelationTypeFactory.java b/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/RelationTypeFactory.java deleted file mode 100644 index 1248433..0000000 --- a/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/RelationTypeFactory.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * MINRES Technologies GmbH - initial API and implementation - *******************************************************************************/ -package com.minres.scviewer.database.sqlite; - -import java.util.HashMap; - -import com.minres.scviewer.database.RelationType; - -class RelationTypeFactory { - - HashMap registry=new HashMap(); - - public RelationType getRelationType(String name) { - if(registry.containsKey(name)) return registry.get(name); - RelationType rt = new RelationType(name); - registry.put(name, rt); - return rt; - } - -} diff --git a/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/SQLiteDbLoader.java b/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/SQLiteDbLoader.java index 934e06b..8e92ad0 100644 --- a/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/SQLiteDbLoader.java +++ b/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/SQLiteDbLoader.java @@ -16,12 +16,14 @@ import java.io.FileInputStream; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveformDb; import com.minres.scviewer.database.IWaveformDbLoader; import com.minres.scviewer.database.IWaveformEvent; +import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.sqlite.db.IDatabase; import com.minres.scviewer.database.sqlite.db.SQLiteDatabase; import com.minres.scviewer.database.sqlite.db.SQLiteDatabaseSelectHandler; @@ -33,7 +35,7 @@ public class SQLiteDbLoader implements IWaveformDbLoader { protected IDatabase database; - private RelationTypeFactory rtf = new RelationTypeFactory(); + private List usedRelationsList = new ArrayList<>(); private IWaveformDb db; @@ -64,7 +66,7 @@ public class SQLiteDbLoader implements IWaveformDbLoader { try { for(ScvStream scvStream:handler.selectObjects()){ TxStream stream = new TxStream(database, db, scvStream); - stream.setRelationTypeFactory(rtf); + stream.setRelationTypeList(usedRelationsList); streams.add(stream); } } catch (SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException @@ -102,4 +104,10 @@ public class SQLiteDbLoader implements IWaveformDbLoader { } return false; } + + @Override + public Collection getAllRelationTypes(){ + return usedRelationsList; + } + } diff --git a/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java b/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java index 952da48..98eba3e 100644 --- a/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java +++ b/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java @@ -55,7 +55,7 @@ public class TxStream extends HierNode implements ITxStream { private TreeMap> events; - private RelationTypeFactory relationMap; + private List usedRelationsList; public TxStream(IDatabase database, IWaveformDb waveformDb, ScvStream scvStream) { super(scvStream.getName()); @@ -181,14 +181,14 @@ public class TxStream extends HierNode implements ITxStream { return getEvents().get(time); } - public void setRelationTypeFactory(RelationTypeFactory rtf) { - this.relationMap=rtf; - + public void setRelationTypeList(List usedRelationsList){ + this.usedRelationsList=usedRelationsList; } - + public RelationType getRelationType(String name) { - if(relationMap!=null) return relationMap.getRelationType(name); - return null; + RelationType relType=RelationType.create(name); + if(!usedRelationsList.contains(relType)) usedRelationsList.add(relType); + return relType; } @Override diff --git a/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TextDbLoader.groovy b/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TextDbLoader.groovy index 1abd546..5ee1689 100644 --- a/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TextDbLoader.groovy +++ b/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TextDbLoader.groovy @@ -10,6 +10,8 @@ *******************************************************************************/ package com.minres.scviewer.database.text; +import java.util.Collection; + import com.minres.scviewer.database.AssociationType import com.minres.scviewer.database.DataType import com.minres.scviewer.database.ITxGenerator @@ -145,7 +147,7 @@ public class TextDbLoader implements IWaveformDbLoader{ Tx tr2= transactionsById[Integer.parseInt(tokens[2])] Tx tr1= transactionsById[Integer.parseInt(tokens[3])] def relType=tokens[1][1..-2] - if(!relationTypes.containsKey(relType)) relationTypes[relType]=new RelationType(relType) + if(!relationTypes.containsKey(relType)) relationTypes[relType]=RelationType.create(relType) def rel = new TxRelation(relationTypes[relType], tr1, tr2) tr1.outgoingRelations< stream.getMaxConcurrency() } } + + + public Collection getAllRelationTypes(){ + return relationTypes.values(); + } + } diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java index 5ca340d..4834914 100644 --- a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java +++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java @@ -25,127 +25,154 @@ import org.eclipse.swt.widgets.Display; import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITxRelation; import com.minres.scviewer.database.ITxStream; +import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.ui.WaveformColors; public class ArrowPainter implements IPainter { - - private final int xCtrlOffset=50; - private final int yCtrlOffset=30; + private final int xCtrlOffset = 50; + + private final int yCtrlOffset = 30; private WaveformCanvas waveCanvas; private ITx tx; - private List iRect; + private List iRect; - private List oRect; + private List oRect; private Rectangle txRectangle; - + + private RelationType highlightType; + long scaleFactor; - + boolean deferredUpdate; - public ArrowPainter(WaveformCanvas waveCanvas) { + public ArrowPainter(WaveformCanvas waveCanvas, RelationType relationType) { this.waveCanvas = waveCanvas; + highlightType=relationType; setTx(null); } + public RelationType getHighlightType() { + return highlightType; + } + + public void setHighlightType(RelationType highlightType) { + this.highlightType = highlightType; + } + public ITx getTx() { return tx; } public void setTx(ITx newTx) { this.tx = newTx; - iRect=new LinkedList<>(); - oRect=new LinkedList<>(); - scaleFactor=waveCanvas.getScaleFactor(); - if(tx!=null){ + iRect = new LinkedList<>(); + oRect = new LinkedList<>(); + scaleFactor = waveCanvas.getScaleFactor(); + if (tx != null) { calculateGeometries(); } } protected void calculateGeometries() { - deferredUpdate=false; - ITxStream stream=tx.getStream(); - IWaveformPainter painter=waveCanvas.wave2painterMap.get(stream); - if(painter==null){ // stream has been added but painter not yet created - deferredUpdate=true; + deferredUpdate = false; + ITxStream stream = tx.getStream(); + IWaveformPainter painter = waveCanvas.wave2painterMap.get(stream); + if (painter == null) { // stream has been added but painter not yet + // created + deferredUpdate = true; return; } - int laneHeight=painter.getHeight()/stream.getMaxConcurrency(); - txRectangle = new Rectangle( - (int)(tx.getBeginTime()/scaleFactor), - waveCanvas.rulerHeight+painter.getVerticalOffset()+laneHeight*tx.getConcurrencyIndex(), - (int)((tx.getEndTime()-tx.getBeginTime())/scaleFactor), - laneHeight); + int laneHeight = painter.getHeight() / stream.getMaxConcurrency(); + txRectangle = new Rectangle((int) (tx.getBeginTime() / scaleFactor), + waveCanvas.rulerHeight + painter.getVerticalOffset() + laneHeight * tx.getConcurrencyIndex(), + (int) ((tx.getEndTime() - tx.getBeginTime()) / scaleFactor), laneHeight); deriveGeom(tx.getIncomingRelations(), iRect, false); deriveGeom(tx.getOutgoingRelations(), oRect, true); } - protected void deriveGeom(Collection relations, List res, boolean useTarget) { - for(ITxRelation iTxRelation: relations){ - ITx otherTx = useTarget?iTxRelation.getTarget():iTxRelation.getSource(); - if(waveCanvas.wave2painterMap.containsKey(otherTx.getStream())){ - ITxStream stream=otherTx.getStream(); - IWaveformPainter painter=waveCanvas.wave2painterMap.get(stream); - int laneHeight=painter.getHeight()/stream.getMaxConcurrency(); - Rectangle bb = new Rectangle( - (int)(otherTx.getBeginTime()/scaleFactor), - waveCanvas.rulerHeight+painter.getVerticalOffset()+laneHeight*otherTx.getConcurrencyIndex(), - (int)((otherTx.getEndTime()-otherTx.getBeginTime())/scaleFactor), - laneHeight); - res.add(bb); + protected void deriveGeom(Collection relations, List res, boolean useTarget) { + for (ITxRelation iTxRelation : relations) { + ITx otherTx = useTarget ? iTxRelation.getTarget() : iTxRelation.getSource(); + if (waveCanvas.wave2painterMap.containsKey(otherTx.getStream())) { + ITxStream stream = otherTx.getStream(); + IWaveformPainter painter = waveCanvas.wave2painterMap.get(stream); + int laneHeight = painter.getHeight() / stream.getMaxConcurrency(); + Rectangle bb = new Rectangle((int) (otherTx.getBeginTime() / scaleFactor), + waveCanvas.rulerHeight + painter.getVerticalOffset() + + laneHeight * otherTx.getConcurrencyIndex(), + (int) ((otherTx.getEndTime() - otherTx.getBeginTime()) / scaleFactor), laneHeight); + res.add(new LinkEntry(bb, iTxRelation.getRelationType())); } } } @Override public void paintArea(GC gc, Rectangle area) { - Color fgColor=waveCanvas.colors[WaveformColors.REL_ARROW.ordinal()]; - if(deferredUpdate || (tx!=null && waveCanvas.getScaleFactor()!=scaleFactor)){ - scaleFactor=waveCanvas.getScaleFactor(); + Color fgColor = waveCanvas.colors[WaveformColors.REL_ARROW.ordinal()]; + Color highliteColor = waveCanvas.colors[WaveformColors.REL_ARROW_HIGHLITE.ordinal()]; + + if (deferredUpdate || (tx != null && waveCanvas.getScaleFactor() != scaleFactor)) { + scaleFactor = waveCanvas.getScaleFactor(); calculateGeometries(); } - for(Rectangle srcRectangle:iRect){ - Point target = drawPath(gc, fgColor, srcRectangle, txRectangle); - gc.drawLine(target.x-8,target.y-5, target.x,target.y); - gc.drawLine(target.x-8,target.y+5, target.x,target.y); + for (LinkEntry entry : iRect) { + Point target = drawPath(gc, highlightType.equals(entry.relationType) ? highliteColor : fgColor, + entry.rectangle, txRectangle); + drawArrow(gc, target); } - for(Rectangle tgtRectangle:oRect){ - Point target = drawPath(gc, fgColor, txRectangle, tgtRectangle); - gc.drawLine(target.x-8,target.y-5, target.x,target.y); - gc.drawLine(target.x-8,target.y+5, target.x,target.y); + for (LinkEntry entry : oRect) { + Point target = drawPath(gc, highlightType.equals(entry.relationType) ? highliteColor : fgColor, txRectangle, + entry.rectangle); + drawArrow(gc, target); } } + protected void drawArrow(GC gc, Point target) { + gc.drawLine(target.x - 8, target.y - 5, target.x, target.y); + gc.drawLine(target.x - 8, target.y + 5, target.x, target.y); + } + protected Point drawPath(GC gc, Color fgColor, Rectangle srcRectangle, Rectangle tgtRectangle) { - Point point1=new Point(0, srcRectangle.y+srcRectangle.height/2); - Point point2=new Point(0, tgtRectangle.y+tgtRectangle.height/2); + Point point1 = new Point(0, srcRectangle.y + srcRectangle.height / 2); + Point point2 = new Point(0, tgtRectangle.y + tgtRectangle.height / 2); point1.x = srcRectangle.x; point2.x = tgtRectangle.x; - if(point2.x>point1.x+srcRectangle.width) point1.x+=srcRectangle.width; - if(point1.x>point2.x+tgtRectangle.width) point2.x+=tgtRectangle.width; + if (point2.x > point1.x + srcRectangle.width) + point1.x += srcRectangle.width; + if (point1.x > point2.x + tgtRectangle.width) + point2.x += tgtRectangle.width; - Path path=new Path(Display.getCurrent()); - path.moveTo(point1.x,point1.y); - if(point1.y==point2.y){ - Point center=new Point((point1.x+point2.x)/2, point1.y-yCtrlOffset); - path.cubicTo(point1.x+xCtrlOffset, point1.y, - center.x-xCtrlOffset, center.y, - center.x, center.y); - path.cubicTo(center.x+xCtrlOffset, center.y, - point2.x-xCtrlOffset, point2.y, - point2.x, point2.y); + Path path = new Path(Display.getCurrent()); + path.moveTo(point1.x, point1.y); + if (point1.y == point2.y) { + Point center = new Point((point1.x + point2.x) / 2, point1.y - yCtrlOffset); + path.cubicTo(point1.x + xCtrlOffset, point1.y, center.x - xCtrlOffset, center.y, center.x, center.y); + path.cubicTo(center.x + xCtrlOffset, center.y, point2.x - xCtrlOffset, point2.y, point2.x, point2.y); } else - path.cubicTo(point1.x+xCtrlOffset, point1.y, point2.x-xCtrlOffset, point2.y, point2.x, point2.y); + path.cubicTo(point1.x + xCtrlOffset, point1.y, point2.x - xCtrlOffset, point2.y, point2.x, point2.y); gc.setAntialias(SWT.ON); gc.setForeground(fgColor); gc.drawPath(path); path.dispose(); return point2; } + + class LinkEntry { + public Rectangle rectangle; + public RelationType relationType; + + public LinkEntry(Rectangle rectangle, RelationType relationType) { + super(); + this.rectangle = rectangle; + this.relationType = relationType; + } + } + } diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java index afbf147..8b9f0bd 100644 --- a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java +++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java @@ -40,6 +40,8 @@ import com.google.common.collect.Lists; import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveformEvent; +import com.minres.scviewer.database.RelationType; +import com.minres.scviewer.database.ui.IWaveformViewer; import com.minres.scviewer.database.ui.WaveformColors; public class WaveformCanvas extends Canvas { @@ -115,7 +117,7 @@ public class WaveformCanvas extends Canvas { painterList.add(trackAreaPainter); rulerPainter=new RulerPainter(this); painterList.add(rulerPainter); - arrowPainter=new ArrowPainter(this); + arrowPainter=new ArrowPainter(this, IWaveformViewer.NEXT_PREV_IN_STREAM); painterList.add(arrowPainter); CursorPainter cp = new CursorPainter(this, scaleFactor * 10, cursorPainters.size()-1); painterList.add(cp); @@ -159,10 +161,19 @@ public class WaveformCanvas extends Canvas { colors[WaveformColors.CURSOR_TEXT.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_WHITE); colors[WaveformColors.MARKER.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_DARK_GRAY); colors[WaveformColors.MARKER_TEXT.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_WHITE); - colors[WaveformColors.REL_ARROW.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_YELLOW); + colors[WaveformColors.REL_ARROW.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_MAGENTA); + colors[WaveformColors.REL_ARROW_HIGHLITE.ordinal()] = SWTResourceManager.getColor(255, 128, 255); } } + public void setHighliteRelation(RelationType relationType){ + if(arrowPainter!=null){ + boolean redraw = arrowPainter.getHighlightType()!=relationType; + arrowPainter.setHighlightType(relationType); + if(redraw) redraw(); + } + } + public Point getOrigin() { return origin; } diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformViewer.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformViewer.java index 0605572..d6f365f 100644 --- a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformViewer.java +++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformViewer.java @@ -13,6 +13,7 @@ package com.minres.scviewer.database.swt.internal; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; @@ -73,9 +74,11 @@ import com.minres.scviewer.database.ISignalChangeMulti; import com.minres.scviewer.database.ISignalChangeSingle; import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITxEvent; +import com.minres.scviewer.database.ITxRelation; import com.minres.scviewer.database.ITxStream; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveformEvent; +import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.ui.GotoDirection; import com.minres.scviewer.database.ui.ICursor; import com.minres.scviewer.database.ui.IWaveformViewer; @@ -83,39 +86,39 @@ import com.minres.scviewer.database.ui.TrackEntry; import com.minres.scviewer.database.ui.WaveformColors; public class WaveformViewer implements IWaveformViewer { - - private ListenerList selectionChangedListeners = new ListenerList(); - + + private ListenerList selectionChangedListeners = new ListenerList(); + private PropertyChangeSupport pcs; private ITx currentTxSelection; - + private TrackEntry currentWaveformSelection; private ScrolledComposite nameListScrolled; - + private ScrolledComposite valueListScrolled; private Control namePaneHeader; private Canvas nameList; - + private Canvas valueList; - + WaveformCanvas waveformCanvas; private Composite top; protected ObservableList streams; - + int selectedMarker = 0; - + private int trackVerticalHeight; - + private TreeMap trackVerticalOffset; - + private HashMap, String> actualValues; - + private Font nameFont, nameFontB; protected MouseListener nameValueMouseListener = new MouseAdapter() { @@ -136,7 +139,7 @@ public class WaveformViewer implements IWaveformViewer { protected MouseListener waveformMouseListener = new MouseAdapter(){ Point start; List initialSelected; - + @Override public void mouseDown(MouseEvent e) { start=new Point(e.x, e.y); @@ -462,10 +465,10 @@ public class WaveformViewer implements IWaveformViewer { if(firstTx!=null){ do { for(ITxEvent evt:firstTx.getValue()){ - ITx tx=evt.getTransaction(); + ITx tx=evt.getTransaction(); if(evt.getType()==ITxEvent.Type.BEGIN && tx.getBeginTime()<=time && tx.getEndTime()>=time){ if(resultsList[tx.getConcurrencyIndex()]==null) - resultsList[tx.getConcurrencyIndex()]= evt.getTransaction(); + resultsList[tx.getConcurrencyIndex()]= evt.getTransaction(); } } firstTx=stream.getEvents().lowerEntry(firstTx.getKey()); @@ -480,7 +483,7 @@ public class WaveformViewer implements IWaveformViewer { } entry.setValue(value); } - } + } } valueList.redraw(); } @@ -491,7 +494,7 @@ public class WaveformViewer implements IWaveformViewer { } return true; } - + /* (non-Javadoc) * @see com.minres.scviewer.database.swt.IWaveformPanel#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) */ @@ -560,7 +563,7 @@ public class WaveformViewer implements IWaveformViewer { public void setSelection(ISelection selection) { setSelection(selection, false); } - + /* (non-Javadoc) * @see com.minres.scviewer.database.swt.IWaveformPanel#setSelection(org.eclipse.jface.viewers.ISelection, boolean) */ @@ -613,10 +616,10 @@ public class WaveformViewer implements IWaveformViewer { IStructuredSelection selection=currentTxSelection!=null? new StructuredSelection(new Object[]{currentTxSelection, currentWaveformSelection.waveform}): new StructuredSelection(currentWaveformSelection.waveform); - Object[] list = selectionChangedListeners.getListeners(); - for (int i = 0; i < list.length; i++) { - ((ISelectionChangedListener) list[i]).selectionChanged(new SelectionChangedEvent(this, selection)); - } + Object[] list = selectionChangedListeners.getListeners(); + for (int i = 0; i < list.length; i++) { + ((ISelectionChangedListener) list[i]).selectionChanged(new SelectionChangedEvent(this, selection)); + } } /* (non-Javadoc) @@ -624,63 +627,91 @@ public class WaveformViewer implements IWaveformViewer { */ @Override public void moveSelection(GotoDirection direction) { - if (currentWaveformSelection.isStream()) { - ITxStream stream = currentWaveformSelection.getStream(); - ITx transaction = null; - if (direction == GotoDirection.NEXT) { - List thisEntryList = stream.getEvents().get(currentTxSelection.getBeginTime()); - boolean meFound=false; - for (ITxEvent evt : thisEntryList) { - if (evt.getType() == ITxEvent.Type.BEGIN) { - if(meFound){ - transaction = evt.getTransaction(); - break; - } - meFound|= evt.getTransaction().equals(currentTxSelection); - } - } - if (transaction == null){ - Entry> entry = stream.getEvents().higherEntry(currentTxSelection.getBeginTime()); - if (entry != null) do { - for (ITxEvent evt : entry.getValue()) { - if (evt.getType() == ITxEvent.Type.BEGIN) { + moveSelection(direction, NEXT_PREV_IN_STREAM) ; + } + + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#moveSelection(com.minres.scviewer.database.swt.GotoDirection, com.minres.scviewer.database.RelationType) + */ + @Override + public void moveSelection(GotoDirection direction, RelationType relationType) { + if (currentWaveformSelection!=null && currentWaveformSelection.isStream() && currentTxSelection!=null) { + if(relationType.equals(IWaveformViewer.NEXT_PREV_IN_STREAM)){ + ITxStream stream = currentWaveformSelection.getStream(); + ITx transaction = null; + if (direction == GotoDirection.NEXT) { + List thisEntryList = stream.getEvents().get(currentTxSelection.getBeginTime()); + boolean meFound=false; + for (ITxEvent evt : thisEntryList) { + if (evt.getType() == ITxEvent.Type.BEGIN) { + if(meFound){ transaction = evt.getTransaction(); break; } + meFound|= evt.getTransaction().equals(currentTxSelection); } - if (transaction == null) - entry = stream.getEvents().higherEntry(entry.getKey()); - } while (entry != null && transaction == null); - } - } else if (direction == GotoDirection.PREV) { - List thisEntryList = stream.getEvents().get(currentTxSelection.getBeginTime()); - boolean meFound=false; - for (ITxEvent evt : Lists.reverse(thisEntryList)) { - if (evt.getType() == ITxEvent.Type.BEGIN) { - if(meFound){ - transaction = evt.getTransaction(); - break; - } - meFound|= evt.getTransaction().equals(currentTxSelection); } - } - if (transaction == null){ - Entry> entry = stream.getEvents().lowerEntry(currentTxSelection.getBeginTime()); - if (entry != null) - do { - for (ITxEvent evt : Lists.reverse(entry.getValue())) { + if (transaction == null){ + Entry> entry = stream.getEvents().higherEntry(currentTxSelection.getBeginTime()); + if (entry != null) do { + for (ITxEvent evt : entry.getValue()) { if (evt.getType() == ITxEvent.Type.BEGIN) { transaction = evt.getTransaction(); break; } } if (transaction == null) - entry = stream.getEvents().lowerEntry(entry.getKey()); + entry = stream.getEvents().higherEntry(entry.getKey()); } while (entry != null && transaction == null); + } + } else if (direction == GotoDirection.PREV) { + List thisEntryList = stream.getEvents().get(currentTxSelection.getBeginTime()); + boolean meFound=false; + for (ITxEvent evt : Lists.reverse(thisEntryList)) { + if (evt.getType() == ITxEvent.Type.BEGIN) { + if(meFound){ + transaction = evt.getTransaction(); + break; + } + meFound|= evt.getTransaction().equals(currentTxSelection); + } + } + if (transaction == null){ + Entry> entry = stream.getEvents().lowerEntry(currentTxSelection.getBeginTime()); + if (entry != null) + do { + for (ITxEvent evt : Lists.reverse(entry.getValue())) { + if (evt.getType() == ITxEvent.Type.BEGIN) { + transaction = evt.getTransaction(); + break; + } + } + if (transaction == null) + entry = stream.getEvents().lowerEntry(entry.getKey()); + } while (entry != null && transaction == null); + } + } + if (transaction != null) { + setSelection(new StructuredSelection(transaction)); + } + } else { + if (direction == GotoDirection.NEXT) { + Collection outRel=currentTxSelection.getOutgoingRelations(); + for(ITxRelation rel:outRel){ + if(relationType.equals(rel.getRelationType())){ + setSelection(new StructuredSelection(rel.getTarget()), true); + return; + } + } + } else if (direction == GotoDirection.PREV) { + Collection inRel=currentTxSelection.getIncomingRelations(); + for(ITxRelation rel:inRel){ + if(relationType.equals(rel.getRelationType())){ + setSelection(new StructuredSelection(rel.getSource()), true); + return; + } + } } - } - if (transaction != null) { - setSelection(new StructuredSelection(transaction)); } } } @@ -706,7 +737,7 @@ public class WaveformViewer implements IWaveformViewer { waveformCanvas.redraw(); } } - + } /* (non-Javadoc) @@ -721,7 +752,7 @@ public class WaveformViewer implements IWaveformViewer { * @see com.minres.scviewer.database.swt.IWaveformPanel#moveSelected(int) */ @Override - public void moveSelected(int i) { + public void moveSelectedTrack(int i) { if(currentWaveformSelection!=null){ ITx selectedTx=currentTxSelection; TrackEntry selectedWaveform=currentWaveformSelection; @@ -815,6 +846,11 @@ public class WaveformViewer implements IWaveformViewer { gc.drawText(value, subArea.x + 5, subArea.y + yOffset + (waveformCanvas.getTrackHeight() - size.y) / 2, true); } + + public void setHighliteRelation(RelationType relationType){ + this.waveformCanvas.setHighliteRelation(relationType); + } + /* (non-Javadoc) * @see com.minres.scviewer.database.swt.IWaveformPanel#getMaxTime() */ @@ -885,7 +921,7 @@ public class WaveformViewer implements IWaveformViewer { public long getSelectedMarkerTime(){ return getMarkerTime(selectedMarker); } - + @Override public List getCursorList(){ List cursors = new LinkedList<>(); diff --git a/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/IWaveformViewer.java b/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/IWaveformViewer.java index cde0a8c..75dc95b 100644 --- a/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/IWaveformViewer.java +++ b/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/IWaveformViewer.java @@ -21,11 +21,15 @@ import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Control; import com.minres.scviewer.database.IWaveform; +import com.minres.scviewer.database.RelationType; public interface IWaveformViewer extends PropertyChangeListener, ISelectionProvider{ String CURSOR_PROPERTY = "cursor_time"; + String MARKER_PROPERTY = "marker_time"; + + public static final RelationType NEXT_PREV_IN_STREAM = RelationType.create("Prev/Next in stream"); public void addSelectionChangedListener(ISelectionChangedListener listener); @@ -47,13 +51,17 @@ public interface IWaveformViewer extends PropertyChangeListener, ISelectionProvi public void moveSelection(GotoDirection direction); + public void moveSelection(GotoDirection direction, RelationType relationType); + public void moveCursor(GotoDirection direction); public List getStreamList(); public TrackEntry getEntryForStream(IWaveform source); - public void moveSelected(int i); + public void moveSelectedTrack(int i); + + public void setHighliteRelation(RelationType relationType); public long getMaxTime(); diff --git a/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/WaveformColors.java b/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/WaveformColors.java index 26b219e..c46ec0c 100644 --- a/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/WaveformColors.java +++ b/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/WaveformColors.java @@ -16,5 +16,5 @@ public enum WaveformColors { TX_BG, TX_BG_HIGHLITE, TX_BORDER, SIGNAL0, SIGNAL1, SIGNALZ, SIGNALX, SIGNAL_TEXT, CURSOR, CURSOR_DRAG, CURSOR_TEXT, - MARKER, MARKER_TEXT, REL_ARROW + MARKER, MARKER_TEXT, REL_ARROW, REL_ARROW_HIGHLITE } \ No newline at end of file diff --git a/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDDbLoader.java b/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDDbLoader.java index e43db10..45fdd38 100644 --- a/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDDbLoader.java +++ b/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDDbLoader.java @@ -12,6 +12,8 @@ package com.minres.scviewer.database.vcd; import java.io.File; import java.io.FileInputStream; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Stack; import java.util.TreeMap; @@ -27,6 +29,7 @@ import com.minres.scviewer.database.IWaveformDb; import com.minres.scviewer.database.IWaveformDbLoader; import com.minres.scviewer.database.IWaveformEvent; import com.minres.scviewer.database.InputFormatException; +import com.minres.scviewer.database.RelationType; // TODO: Auto-generated Javadoc /** @@ -176,5 +179,10 @@ public class VCDDbLoader implements IWaveformDbLoader, IVCDDatabaseBuilder { ((VCDSignal)signal).values.put(time, new VCDSignalChangeMulti(time, decodedValues)); } } + + @Override + public Collection getAllRelationTypes(){ + return Collections.emptyList(); + } } diff --git a/com.minres.scviewer.database/.classpath b/com.minres.scviewer.database/.classpath index 46cec6e..f2156e9 100644 --- a/com.minres.scviewer.database/.classpath +++ b/com.minres.scviewer.database/.classpath @@ -1,7 +1,7 @@ - - + + diff --git a/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDb.java b/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDb.java index 6694d38..928c376 100644 --- a/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDb.java +++ b/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDb.java @@ -22,6 +22,8 @@ public interface IWaveformDb extends IHierNode { public List> getAllWaves(); + public List getAllRelationTypes(); + public boolean load(File inp) throws Exception; public boolean isLoaded(); diff --git a/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbLoader.java b/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbLoader.java index 0e2aaba..53bdd3c 100644 --- a/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbLoader.java +++ b/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveformDbLoader.java @@ -11,6 +11,7 @@ package com.minres.scviewer.database; import java.io.File; +import java.util.Collection; import java.util.List; public interface IWaveformDbLoader { @@ -21,4 +22,6 @@ public interface IWaveformDbLoader { public List> getAllWaves() ; + public Collection getAllRelationTypes() ; + } diff --git a/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationType.java b/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationType.java index 812a082..95d365c 100644 --- a/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationType.java +++ b/com.minres.scviewer.database/src/com/minres/scviewer/database/RelationType.java @@ -10,11 +10,26 @@ *******************************************************************************/ package com.minres.scviewer.database; +import java.util.HashMap; + public class RelationType { + private static HashMap registry = new HashMap<>(); + private String name; - public RelationType(String name) { + public static RelationType create(String name){ + if(registry.containsKey(name)){ + return registry.get(name); + }else{ + RelationType relType = new RelationType(name); + registry.put(name, relType); + return relType; + } + + } + + private RelationType(String name) { super(); this.name = name; } @@ -30,4 +45,9 @@ public class RelationType { public String toString(){ return name; } + + @Override + public int hashCode() { + return name.hashCode(); + } } diff --git a/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java b/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java index 10fe6a2..8d6b199 100644 --- a/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java +++ b/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java @@ -29,6 +29,7 @@ import com.minres.scviewer.database.IWaveformDb; import com.minres.scviewer.database.IWaveformDbLoader; import com.minres.scviewer.database.IWaveformEvent; import com.minres.scviewer.database.InputFormatException; +import com.minres.scviewer.database.RelationType; public class WaveformDb extends HierNode implements IWaveformDb { @@ -38,6 +39,8 @@ public class WaveformDb extends HierNode implements IWaveformDb { private List childNodes; + private List relationTypes; + private Map> waveforms; private Long maxTime; @@ -59,6 +62,7 @@ public class WaveformDb extends HierNode implements IWaveformDb { public WaveformDb() { super(); waveforms = new HashMap>(); + relationTypes=new ArrayList<>(); maxTime=0L; } @@ -89,6 +93,7 @@ public class WaveformDb extends HierNode implements IWaveformDb { } if(name==null) name=getFileBasename(inp.getName()); buildHierarchyNodes() ; + relationTypes.addAll(loader.getAllRelationTypes()); pcs.firePropertyChange("WAVEFORMS", null, waveforms); pcs.firePropertyChange("CHILDS", null, childNodes); loaded = true; @@ -185,4 +190,9 @@ public class WaveformDb extends HierNode implements IWaveformDb { } return sb.toString(); } + + @Override + public List getAllRelationTypes() { + return relationTypes; + } } diff --git a/com.minres.scviewer.e4.application/.settings/org.eclipse.jdt.core.prefs b/com.minres.scviewer.e4.application/.settings/org.eclipse.jdt.core.prefs index f42de36..d17b672 100644 --- a/com.minres.scviewer.e4.application/.settings/org.eclipse.jdt.core.prefs +++ b/com.minres.scviewer.e4.application/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.7 diff --git a/com.minres.scviewer.e4.application/Application.e4xmi b/com.minres.scviewer.e4.application/Application.e4xmi index 2c5175a..ce8672d 100644 --- a/com.minres.scviewer.e4.application/Application.e4xmi +++ b/com.minres.scviewer.e4.application/Application.e4xmi @@ -4,29 +4,26 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -50,7 +47,7 @@ - + @@ -79,42 +76,48 @@ - - + + - + - + - + - + - + - + - + + + + + + + - + - + - + @@ -138,6 +141,7 @@ + @@ -156,15 +160,15 @@ - + - + - + @@ -199,7 +203,7 @@ - + @@ -214,7 +218,10 @@ - + + + + diff --git a/com.minres.scviewer.e4.application/icons/Minres_logo.png b/com.minres.scviewer.e4.application/icons/Minres_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7a2ac04709a8269f4758a9c65ff0e8e997c3d6 GIT binary patch literal 7978 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 literal 0 HcmV?d00001 diff --git a/com.minres.scviewer.e4.application/icons/SCViewer.icns b/com.minres.scviewer.e4.application/icons/SCViewer.icns deleted file mode 100644 index c4727f86ccebc61d8f50e4eda0db95029ad1c33f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46830 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 diff --git a/com.minres.scviewer.e4.application/icons/SCViewer_128x32.png b/com.minres.scviewer.e4.application/icons/SCViewer_128x32.png deleted file mode 100644 index f7fb7fc3a8f9e2887ba04292696b7fabf68789e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6444 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 TDIkNf00000NkvXXu0mjfY_Xoq diff --git a/com.minres.scviewer.e4.application/icons/SCViewer_512.png b/com.minres.scviewer.e4.application/icons/SCViewer_512.png deleted file mode 100644 index ba03ec8801b8a9a73430b9f3c40db4216ea9f92e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12776 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 diff --git a/com.minres.scviewer.e4.application/icons/SCViewer_64x32.png b/com.minres.scviewer.e4.application/icons/SCViewer_64x32.png deleted file mode 100644 index 304cd77db1185c03a7c4438e8408c3dfd3ab314a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5206 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 diff --git a/com.minres.scviewer.e4.application/icons/SCViewer_logo.png b/com.minres.scviewer.e4.application/icons/SCViewer_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..255cfbcdea30f92589f23fbce211952e8ef423b1 GIT binary patch literal 37882 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�m-LUt0C=b3Cq-7 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 literal 0 HcmV?d00001 diff --git a/com.minres.scviewer.e4.application/icons/empty.png b/com.minres.scviewer.e4.application/icons/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..cdba92ae9b5621db2a8ccdea156e25c96a8b3858 GIT binary patch literal 3168 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 literal 0 HcmV?d00001 diff --git a/com.minres.scviewer.e4.application/icons/scviewer.gif b/com.minres.scviewer.e4.application/icons/scviewer.gif deleted file mode 100644 index 229a663ea7765b40b688a72a03dc5bc1566d5274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmZ?wbhEHb6krfwIK;+qMN`vlroo;)d!9Xb@a);M=g*)22Lr{QER0+X>&`!)6P~MeBrHs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p items, MApplication application, EModelService modelService) { +// modelService.getActivePerspective(window) +// modelService.findElements(application,"myID",MPart.class, EModelService.IN_ACTIVE_PERSPECTIVE); + // MDirectMenuItem dynamicItem = MMenuFactory.INSTANCE.createDirectMenuItem(); + MPart part = partService.getActivePart(); + if(part.getObject()instanceof WaveformViewerPart){ + WaveformViewerPart waveformViewerPart = (WaveformViewerPart) part.getObject(); + RelationType relationTypeFilter = waveformViewerPart.getRelationTypeFilter(); + MCommand command = modelService.findElements(application, + "com.minres.scviewer.e4.application.command.setrelationtype", MCommand.class, null).get(0); + MCommandParameter commandParameter = command.getParameters().get(0); + for(RelationType relationType:waveformViewerPart.getAllRelationTypes()){ +// MDirectMenuItem dynamicItem = modelService.createModelElement(MDirectMenuItem.class); +// +// dynamicItem.setLabel(relationType.getName()); +// dynamicItem.setIconURI(relationTypeFilter.equals(relationType)? +// "platform:/plugin/com.minres.scviewer.e4.application/icons/tick.png": +// "platform:/plugin/com.minres.scviewer.e4.application/icons/empty.png"); +// dynamicItem.setContributorURI("platform:/plugin/com.minres.scviewer.e4.application"); +// dynamicItem.setContributionURI("bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.DirectMenuItem?blah=1"); +// items.add(dynamicItem); + MParameter parameter=modelService.createModelElement(MParameter.class); + parameter.setName(commandParameter.getElementId()); + parameter.setValue(relationType.getName()); + parameter.setContributorURI("platform:/plugin/com.minres.scviewer.e4.application"); + MHandledMenuItem handledMenuItem= modelService.createModelElement(MHandledMenuItem.class); + handledMenuItem.setLabel(relationType.getName()); + if(relationTypeFilter.equals(relationType)){ + handledMenuItem.setEnabled(false); + handledMenuItem.setIconURI("platform:/plugin/com.minres.scviewer.e4.application/icons/tick.png"); + }else + handledMenuItem.setIconURI("platform:/plugin/com.minres.scviewer.e4.application/icons/empty.png"); + handledMenuItem.setContributorURI("platform:/plugin/com.minres.scviewer.e4.application"); + handledMenuItem.setCommand(command); + handledMenuItem.getParameters().add(parameter); + items.add(handledMenuItem); + } + } + } + +} \ No newline at end of file diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/elements/RelationTypeToolControl.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/elements/RelationTypeToolControl.java new file mode 100644 index 0000000..ad18b66 --- /dev/null +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/elements/RelationTypeToolControl.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * Copyright (c) 2015 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ +package com.minres.scviewer.e4.application.elements; + +import javax.annotation.PostConstruct; +import javax.inject.Inject; +import javax.inject.Named; + +import org.eclipse.e4.core.di.annotations.Optional; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.services.IServiceConstants; +import org.eclipse.e4.ui.workbench.modeling.EPartService; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; + +import com.minres.scviewer.database.ITx; +import com.minres.scviewer.database.RelationType; +import com.minres.scviewer.e4.application.parts.PartListener; +import com.minres.scviewer.e4.application.parts.WaveformViewerPart; + +public class RelationTypeToolControl extends PartListener implements ISelectionChangedListener { + + EPartService partService; + + ComboViewer comboViewer; + + WaveformViewerPart waveformViewerPart; + + RelationType dummy = RelationType.create("------------"); + + @Inject + public RelationTypeToolControl(EPartService partService) { + this.partService=partService; + partService.addPartListener(this); + } + + @PostConstruct + public void createGui(Composite parent) { + comboViewer = new ComboViewer(parent, SWT.NONE); + Combo comboBox = comboViewer.getCombo(); + comboBox.setBounds(0, 0, 26, 22); + comboBox.setText("Select"); + comboViewer.setContentProvider(new ArrayContentProvider()); + comboViewer.setInput(new RelationType[] {dummy}); + comboViewer.setSelection(new StructuredSelection(dummy)); + comboViewer.addSelectionChangedListener(this); + } + + @Override + public void partActivated(MPart part) { + if(part.getObject() instanceof WaveformViewerPart){ + waveformViewerPart=(WaveformViewerPart) part.getObject(); + checkSelection(waveformViewerPart.getSelection()); + } else { + waveformViewerPart=null; + checkSelection(new StructuredSelection()); + } + } + + @Inject + public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection, EPartService partService){ + MPart part = partService.getActivePart(); + if(part!=null && part.getObject() instanceof WaveformViewerPart && comboViewer!=null){ + checkSelection(selection); + } + } + + protected void checkSelection(ISelection selection) { + if( selection instanceof IStructuredSelection) { + Object object= ((IStructuredSelection)selection).getFirstElement(); + if(object instanceof ITx && waveformViewerPart!=null){ + comboViewer.getCombo().setEnabled(true); + comboViewer.setInput(waveformViewerPart.getSelectionRelationTypes());//getAllRelationTypes()); + comboViewer.setSelection(new StructuredSelection(waveformViewerPart.getRelationTypeFilter())); + return; + } + } + comboViewer.getCombo().setEnabled(false); + } + + @Override + public void selectionChanged(SelectionChangedEvent event) { + MPart part = partService.getActivePart(); + if(part!=null && part.getObject() instanceof WaveformViewerPart && !event.getSelection().isEmpty()){ + WaveformViewerPart waveformViewerPart=(WaveformViewerPart) part.getObject(); + if(event.getSelection() instanceof IStructuredSelection){ + waveformViewerPart.setNavigationRelationType( + (RelationType)((IStructuredSelection)event.getSelection()).getFirstElement()); + } + } + } + +} \ No newline at end of file diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AboutHandler.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AboutHandler.java index d6bf717..4220ee4 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AboutHandler.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AboutHandler.java @@ -12,11 +12,14 @@ package com.minres.scviewer.e4.application.handlers; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Shell; +import com.minres.scviewer.e4.application.parts.AboutDialog; + public class AboutHandler { @Execute public void execute(Shell shell) { - MessageDialog.openInformation(shell, "About", "Eclipse 4 Application example."); + AboutDialog.open(shell, SWT.NONE); } } diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AddWaveformHandler.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AddWaveformHandler.java index b3aaf47..0e532cb 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AddWaveformHandler.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AddWaveformHandler.java @@ -13,6 +13,7 @@ package com.minres.scviewer.e4.application.handlers; import java.util.List; +import javax.inject.Inject; import javax.inject.Named; import org.eclipse.e4.core.di.annotations.CanExecute; @@ -24,44 +25,46 @@ import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.jface.viewers.IStructuredSelection; import com.minres.scviewer.database.IWaveform; -import com.minres.scviewer.e4.application.parts.WaveformListPart; +import com.minres.scviewer.e4.application.parts.DesignBrowser; public class AddWaveformHandler { public final static String PARAM_WHERE_ID="com.minres.scviewer.e4.application.command.addwaveform.where"; public final static String PARAM_ALL_ID="com.minres.scviewer.e4.application.command.addwaveform.all"; - + + @Inject @Optional DesignBrowser designBrowser; + @CanExecute public boolean canExecute(@Named(PARAM_WHERE_ID) String where, @Named(PARAM_ALL_ID) String all, EPartService partService, @Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection) { - WaveformListPart listPart = getListPart( partService); - if(listPart==null || listPart.getActiveWaveformViewerPart()==null) return false; + if(designBrowser==null) designBrowser = getListPart( partService); + if(designBrowser==null || designBrowser.getActiveWaveformViewerPart()==null) return false; Boolean before = "before".equalsIgnoreCase(where); if("true".equalsIgnoreCase(all)) - return listPart.getFilteredChildren().length>0 && - (!before || ((IStructuredSelection)listPart.getActiveWaveformViewerPart().getSelection()).size()>0); + return designBrowser.getFilteredChildren().length>0 && + (!before || ((IStructuredSelection)designBrowser.getActiveWaveformViewerPart().getSelection()).size()>0); else return selection.size()>0 && - (!before || ((IStructuredSelection)listPart.getActiveWaveformViewerPart().getSelection()).size()>0); + (!before || ((IStructuredSelection)designBrowser.getActiveWaveformViewerPart().getSelection()).size()>0); } @Execute public void execute(@Named(PARAM_WHERE_ID) String where, @Named(PARAM_ALL_ID) String all, EPartService partService, @Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection) { - WaveformListPart listPart = getListPart( partService); - if(listPart!=null && selection.size()>0){ + if(designBrowser==null) designBrowser = getListPart( partService); + if(designBrowser!=null && selection.size()>0){ List sel=selection.toList(); - listPart.getActiveWaveformViewerPart().addStreamsToList(sel.toArray(new IWaveform[]{}), + designBrowser.getActiveWaveformViewerPart().addStreamsToList(sel.toArray(new IWaveform[]{}), "before".equalsIgnoreCase(where)); } } - protected WaveformListPart getListPart(EPartService partService){ + protected DesignBrowser getListPart(EPartService partService){ MPart part = partService.getActivePart(); - if(part.getObject() instanceof WaveformListPart) - return (WaveformListPart) part.getObject(); + if(part.getObject() instanceof DesignBrowser) + return (DesignBrowser) part.getObject(); else return null; } diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/SetRelationTypeHandler.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/SetRelationTypeHandler.java new file mode 100644 index 0000000..10c28c4 --- /dev/null +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/SetRelationTypeHandler.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2015 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ + +package com.minres.scviewer.e4.application.handlers; + +import javax.inject.Named; + +import org.eclipse.e4.core.di.annotations.Execute; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.workbench.modeling.EPartService; + +import com.minres.scviewer.e4.application.parts.WaveformViewerPart; + +public class SetRelationTypeHandler { + final static String PARAMTER_ID="com.minres.scviewer.e4.application.commandparameter.relationName"; + + @Execute + public void execute(@Named(PARAMTER_ID) String relationName, EPartService partService) { + MPart part = partService.getActivePart(); + Object obj = part.getObject(); + if(obj instanceof WaveformViewerPart){ + WaveformViewerPart waveformViewerPart = (WaveformViewerPart) obj; + waveformViewerPart.setNavigationRelationType(relationName); + } + } + +} \ No newline at end of file diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/AboutDialog.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/AboutDialog.java new file mode 100644 index 0000000..fc67b59 --- /dev/null +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/AboutDialog.java @@ -0,0 +1,183 @@ +/******************************************************************************* + * Copyright (c) 2015 MINRES Technologies GmbH and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * MINRES Technologies GmbH - initial API and implementation + *******************************************************************************/ +package com.minres.scviewer.e4.application.parts; + +import java.awt.Desktop; +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.StyleRange; +import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Canvas; +import org.eclipse.swt.widgets.Dialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Link; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.wb.swt.ResourceManager; +import org.eclipse.wb.swt.SWTResourceManager; + +public class AboutDialog extends Dialog { + + protected int result; + protected Shell shell; + private Color white; + protected StyledText styledText; + /* + Eclipse IDE for Java Developers + +Version: Mars.1 Release (4.5.1) +Build id: 20150924-1200 +(c) Copyright Eclipse contributors and others 2000, 2015. All rights reserved. Eclipse and the Eclipse logo are trademarks of the Eclipse Foundation, Inc., https://www.eclipse.org/. The Eclipse logo cannot be altered without Eclipse's permission. Eclipse logos are provided for use under the Eclipse logo and trademark guidelines, https://www.eclipse.org/logotm/. Oracle and Java are trademarks or registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. + */ + private String productTitle= + "\nSCViewer - a SystemC waveform viewer\n\nVersion: 1.0\n"; + private String copyrightText="\nCopyright (c) 2015 MINRES Technologies GmbH and others.\n"+ + "\n"+ + "All rights reserved. MINRES and the MINRES logo are trademarks of MINRES Technologies GmbH, http://www.minres.com/ . "+ + "This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 "+ + "which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html\n"; + + /** + * Create the dialog. + * @param parent + * @param style + */ + public AboutDialog(Shell parent, int style) { + super(parent, style); + setText("SWT Dialog"); + white=SWTResourceManager.getColor(SWT.COLOR_WHITE); + } + + /** + * Open the dialog. + * @return the result + */ + public int open() { + createContents(); + shell.open(); + shell.layout(); + Display display = getParent().getDisplay(); + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) { + display.sleep(); + } + } + return result; + } + + /** + * Create contents of the dialog. + */ + private void createContents() { + shell = new Shell(getParent(), getStyle()); + shell.setSize(600, 300); + shell.setText(getText()); + shell.setLayout(new GridLayout(2, false)); + final Image scviewerLogo=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/SCViewer_logo.png"); + final Image minresLogo=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/Minres_logo.png"); + + Canvas canvas = new Canvas(shell,SWT.NO_REDRAW_RESIZE); + GridData gd_canvas = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); + gd_canvas.widthHint = 200; + gd_canvas.heightHint =250; + canvas.setLayoutData(gd_canvas); + canvas.addPaintListener(new PaintListener() { + public void paintControl(PaintEvent e) { + e.gc.setBackground(white); + e.gc.fillRectangle(e.x, e.y, e.width, e.height); + e.gc.drawImage(scviewerLogo,4,0); + e.gc.drawImage(minresLogo,0,200); + } + }); + + styledText = new StyledText(shell, SWT.BORDER); + styledText.setEditable(false); + GridData gd_styledText = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1); + styledText.setLayoutData(gd_styledText); + styledText.setText(productTitle+copyrightText); + styledText.setBackground(white); + styledText.setWordWrap(true); + styledText.setLeftMargin(5); + StyleRange styleRange = new StyleRange(); + styleRange.start = 0; + styleRange.length = productTitle.length(); + styleRange.fontStyle = SWT.BOLD; + styledText.setStyleRange(styleRange); + ///^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ + Pattern pattern = Pattern.compile("https?:\\/\\/([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w\\.-]*)*\\/?"); + // in case you would like to ignore case sensitivity, + // you could use this statement: + // Pattern pattern = Pattern.compile("\\s+", Pattern.CASE_INSENSITIVE); + Matcher matcher = pattern.matcher(productTitle+copyrightText); + // check all occurance + while (matcher.find()) { + styleRange = new StyleRange(); + styleRange.underline=true; + styleRange.underlineStyle = SWT.UNDERLINE_LINK; + styleRange.data = matcher.group(); + styleRange.start = matcher.start(); + styleRange.length = matcher.end()-matcher.start(); + styledText.setStyleRange(styleRange); + } + styledText.addListener(SWT.MouseDown, new Listener() { + @Override + public void handleEvent(Event event) { + // It is up to the application to determine when and how a link should be activated. + // links are activated on mouse down when the control key is held down +// if ((event.stateMask & SWT.MOD1) != 0) { + try { + int offset = styledText.getOffsetAtLocation(new Point (event.x, event.y)); + StyleRange style = styledText.getStyleRangeAtOffset(offset); + if (style != null && style.underline && style.underlineStyle == SWT.UNDERLINE_LINK) { + Desktop.getDesktop().browse(new java.net.URI(style.data.toString())); + } + } catch (IOException | URISyntaxException | IllegalArgumentException e) {} +// } + } + }); + + styleRange.start = 0; + new Label(shell, SWT.NONE); + + Button okButton = new Button(shell, SWT.NONE); + okButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); + okButton.setBounds(0, 0, 94, 28); + okButton.setText("Close"); + okButton.setFocus(); + okButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if(!shell.isDisposed()) shell.dispose(); + } + }); + } + + public static boolean open(Shell parent, int style) { + AboutDialog dialog = new AboutDialog(parent, style | SWT.SHEET); + return dialog.open() == 0; + } +} diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/DesignBrowser.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/DesignBrowser.java index 137b970..2616263 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/DesignBrowser.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/DesignBrowser.java @@ -12,39 +12,97 @@ package com.minres.scviewer.e4.application.parts; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.lang.annotation.Annotation; import java.util.Arrays; import java.util.List; import javax.annotation.PostConstruct; import javax.inject.Inject; +import javax.inject.Named; +import org.eclipse.e4.core.contexts.ContextInjectionFactory; +import org.eclipse.e4.core.contexts.IEclipseContext; +import org.eclipse.e4.core.di.annotations.CanExecute; +import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.core.di.annotations.Optional; import org.eclipse.e4.core.services.events.IEventBroker; import org.eclipse.e4.ui.di.Focus; import org.eclipse.e4.ui.di.UIEventTopic; +import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.services.EMenuService; +import org.eclipse.e4.ui.services.IServiceConstants; +import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.e4.ui.workbench.modeling.ESelectionService; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; +import org.eclipse.swt.widgets.ToolBar; +import org.eclipse.swt.widgets.ToolItem; +import org.eclipse.wb.swt.ResourceManager; +import org.eclipse.wb.swt.SWTResourceManager; +import com.minres.scviewer.database.IHierNode; +import com.minres.scviewer.database.ITx; +import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveformDb; +import com.minres.scviewer.e4.application.handlers.AddWaveformHandler; import com.minres.scviewer.e4.application.provider.TxDbContentProvider; import com.minres.scviewer.e4.application.provider.TxDbLabelProvider; -public class DesignBrowser implements ISelectionChangedListener { +public class DesignBrowser { + + private static final String POPUP_ID="com.minres.scviewer.e4.application.parts.DesignBrowser.popupmenu"; @Inject IEventBroker eventBroker; @Inject ESelectionService selectionService; + @Inject EMenuService menuService; + + @Inject IEclipseContext eclipseCtx; + + private SashForm sashForm; + + Composite top; + + private Composite bottom; + private TreeViewer treeViewer; + private Text nameFilter; - private PropertyChangeListener l = new PropertyChangeListener() { + private TableViewer txTableViewer; + + ToolItem appendItem, insertItem, insertAllItem, appendAllItem; + + WaveformAttributeFilter attributeFilter; + + int thisSelectionCount=0, otherSelectionCount=0; + + private PropertyChangeListener treeViewerPCL = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if("CHILDS".equals(evt.getPropertyName())){ @@ -58,46 +116,327 @@ public class DesignBrowser implements ISelectionChangedListener { } }; + private WaveformViewerPart waveformViewerPart; + + protected PaintListener sashPaintListener=new PaintListener() { + @Override + public void paintControl(PaintEvent e) { + int size=Math.min(e.width, e.height)-1; + e.gc.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_GRAY)); + e.gc.setFillRule(SWT.FILL_EVEN_ODD); + if(e.width>e.height) + e.gc.drawArc(e.x+(e.width-size)/2, e.y, size, size, 0, 360); + else + e.gc.drawArc(e.x, e.y+(e.height-size)/2, size, size, 0, 360); + } + }; + @PostConstruct public void createComposite(Composite parent) { + sashForm = new SashForm(parent, SWT.BORDER | SWT.SMOOTH | SWT.VERTICAL); + + top = new Composite(sashForm, SWT.NONE); + createTreeViewerComposite(top); + bottom = new Composite(sashForm, SWT.NONE); + createTableComposite(bottom); + + sashForm.setWeights(new int[] {100, 100}); + sashForm.SASH_WIDTH=5; + top.addControlListener(new ControlAdapter() { + public void controlResized(ControlEvent e) { + sashForm.getChildren()[2].addPaintListener(sashPaintListener); + top.removeControlListener(this); + } + }); + } + + public void createTreeViewerComposite(Composite parent) { parent.setLayout(new GridLayout(1, false)); treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); - treeViewer.addSelectionChangedListener(this); treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); treeViewer.setContentProvider(new TxDbContentProvider()); treeViewer.setLabelProvider(new TxDbLabelProvider()); treeViewer.setUseHashlookup(true); treeViewer.setAutoExpandLevel(2); + treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { + + @Override + public void selectionChanged(SelectionChangedEvent event) { + ISelection selection=event.getSelection(); + if( selection instanceof IStructuredSelection) { + Object object= ((IStructuredSelection)selection).getFirstElement(); + if(object instanceof IHierNode&& ((IHierNode)object).getChildNodes().size()!=0){ + txTableViewer.setInput(object); + updateButtons(); + } + } + } + }); + } + + public void createTableComposite(Composite parent) { + parent.setLayout(new GridLayout(1, false)); + + nameFilter = new Text(parent, SWT.BORDER); + nameFilter.setMessage("Enter text to filter waveforms"); + nameFilter.addModifyListener(new ModifyListener() { + @Override + public void modifyText(ModifyEvent e) { + attributeFilter.setSearchText(((Text) e.widget).getText()); + updateButtons(); + txTableViewer.refresh(); + } + }); + nameFilter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + attributeFilter = new WaveformAttributeFilter(); + + txTableViewer = new TableViewer(parent); + txTableViewer.setContentProvider(new TxDbContentProvider(true)); + txTableViewer.setLabelProvider(new TxDbLabelProvider()); + txTableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); + txTableViewer.addFilter(attributeFilter); + txTableViewer.addDoubleClickListener(new IDoubleClickListener() { + @Override + public void doubleClick(DoubleClickEvent event) { + AddWaveformHandler myHandler = new AddWaveformHandler(); + Object result = runCommand(myHandler, CanExecute.class, "after", false); + if(result!=null && (Boolean)result) + ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); + } + }); + txTableViewer.addSelectionChangedListener(new ISelectionChangedListener() { + + @Override + public void selectionChanged(SelectionChangedEvent event) { + selectionService.setSelection(event.getSelection()); + updateButtons(); + } + }); + + menuService.registerContextMenu(txTableViewer.getControl(), POPUP_ID); + + ToolBar toolBar = new ToolBar(parent, SWT.FLAT | SWT.RIGHT); + toolBar.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); + toolBar.setBounds(0, 0, 87, 20); + + appendItem = new ToolItem(toolBar, SWT.NONE); + appendItem.setToolTipText("Append after"); + appendItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/append_wave.png")); + appendItem.setEnabled(false); + appendItem.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + AddWaveformHandler myHandler = new AddWaveformHandler(); + Object result = runCommand(myHandler, CanExecute.class, "after", false); + if(result!=null && (Boolean)result) + ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); + } + + }); + + insertItem = new ToolItem(toolBar, SWT.NONE); + insertItem.setToolTipText("Insert before"); + insertItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/insert_wave.png")); + insertItem.setEnabled(false); + insertItem.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + AddWaveformHandler myHandler = new AddWaveformHandler(); + Object result = runCommand(myHandler, CanExecute.class, "before", false); + if(result!=null && (Boolean)result) + ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); + } + }); + new ToolItem(toolBar, SWT.SEPARATOR); + + appendAllItem = new ToolItem(toolBar, SWT.NONE); + appendAllItem.setToolTipText("Append all after"); + appendAllItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/append_all_waves.png")); + appendAllItem.setEnabled(false); + + new ToolItem(toolBar, SWT.SEPARATOR); + appendAllItem.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + Object[] all = getFilteredChildren(txTableViewer); + if(all.length>0){ + Object oldSel=selectionService.getSelection(); + selectionService.setSelection(new StructuredSelection(all)); + AddWaveformHandler myHandler = new AddWaveformHandler(); + Object result = runCommand(myHandler, CanExecute.class, "after", false); + if(result!=null && (Boolean)result) + ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); + selectionService.setSelection(oldSel); + } + } + }); + insertAllItem = new ToolItem(toolBar, SWT.NONE); + insertAllItem.setToolTipText("Insert all before"); + insertAllItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/insert_all_waves.png")); + insertAllItem.setEnabled(false); + insertAllItem.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + Object[] all = getFilteredChildren(txTableViewer); + if(all.length>0){ + Object oldSel=selectionService.getSelection(); + selectionService.setSelection(new StructuredSelection(all)); + AddWaveformHandler myHandler = new AddWaveformHandler(); + Object result = runCommand(myHandler, CanExecute.class, "before", false); + if(result!=null && (Boolean)result) + ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); + selectionService.setSelection(oldSel); + } + } + }); } @Focus public void setFocus() { - treeViewer.getTree().setFocus(); - selectionService.setSelection(treeViewer.getSelection()); - } - - @Override - public void selectionChanged(SelectionChangedEvent event) { - selectionService.setSelection(event.getSelection()); + txTableViewer.getTable().setFocus(); + IStructuredSelection selection = (IStructuredSelection)txTableViewer.getSelection(); + if(selection.size()==0){ + appendItem.setEnabled(false); + } + selectionService.setSelection(selection); + thisSelectionCount=selection.toList().size(); + updateButtons(); } @SuppressWarnings("unchecked") @Inject @Optional public void getStatusEvent(@UIEventTopic(WaveformViewerPart.ACTIVE_WAVEFORMVIEW) WaveformViewerPart waveformViewerPart) { + if(this.waveformViewerPart!=null) + this.waveformViewerPart.storeDesignBrowerState(new DBState()); + this.waveformViewerPart=waveformViewerPart; IWaveformDb database = waveformViewerPart.getDatabase(); Object input = treeViewer.getInput(); - if(input!=null && input instanceof List) - ((List)input).get(0).removePropertyChangeListener(l); + if(input!=null && input instanceof List){ + IWaveformDb db = ((List)input).get(0); + if(db==database) return; // do nothing if old and new daabase is the same + ((List)input).get(0).removePropertyChangeListener(treeViewerPCL); + } treeViewer.setInput(database.isLoaded()?Arrays.asList(new IWaveformDb[]{database}):null); + Object state=this.waveformViewerPart.retrieveDesignBrowerState(); + if(state!=null && state instanceof DBState) + ((DBState)state).apply(); + else + txTableViewer.setInput(null); // Set up the tree viewer - database.addPropertyChangeListener(l); + database.addPropertyChangeListener(treeViewerPCL); } -/* - * TODO: needs top be implemented - @Inject @Optional - public void getStatusEvent(@UIEventTopic(WaveformViewerPart.ACTIVE_NODE_PATH) String path) { - + + @Inject + public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection, EPartService partService){ + MPart part = partService.getActivePart(); + if(part!=null && part.getObject() != this && selection!=null){ + if( selection instanceof IStructuredSelection) { + Object object= ((IStructuredSelection)selection).getFirstElement(); + if(object instanceof IHierNode&& ((IHierNode)object).getChildNodes().size()!=0) + txTableViewer.setInput(object); + otherSelectionCount = (object instanceof IWaveform || object instanceof ITx)?1:0; + } + } + updateButtons(); + } + + private void updateButtons() { + if(txTableViewer!=null && !insertItem.isDisposed() && !appendItem.isDisposed() && + !appendAllItem.isDisposed() && !insertAllItem.isDisposed()){ + AddWaveformHandler myHandler = new AddWaveformHandler(); + Object result = runCommand(myHandler, CanExecute.class, "after", false); + appendItem.setEnabled(result instanceof Boolean && (Boolean)result); + result = runCommand(myHandler, CanExecute.class, "after", true); + appendAllItem.setEnabled(result instanceof Boolean && (Boolean)result); + result = runCommand(myHandler, CanExecute.class, "before", false); + insertItem.setEnabled(result instanceof Boolean && (Boolean)result); + result = runCommand(myHandler, CanExecute.class, "before", true); + insertAllItem.setEnabled(result instanceof Boolean && (Boolean)result); + } + } + + public class WaveformAttributeFilter extends ViewerFilter { + + private String searchString; + + public void setSearchText(String s) { + this.searchString = ".*" + s + ".*"; + } + + @Override + public boolean select(Viewer viewer, Object parentElement, Object element) { + if (searchString == null || searchString.length() == 0) { + return true; + } + IWaveform p = (IWaveform) element; + if (p.getName().matches(searchString)) { + return true; + } + return false; + } + } + + protected Object[] getFilteredChildren(TableViewer viewer){ + Object parent = viewer.getInput(); + if(parent==null) return new Object[0]; + Object[] result = null; + if (parent != null) { + IStructuredContentProvider cp = (IStructuredContentProvider) viewer.getContentProvider(); + if (cp != null) { + result = cp.getElements(parent); + if(result==null) return new Object[0]; + for (int i = 0, n = result.length; i < n; ++i) { + if(result[i]==null) return new Object[0]; + } + } + } + ViewerFilter[] filters = viewer.getFilters(); + if (filters != null) { + for (ViewerFilter f:filters) { + Object[] filteredResult = f.filter(viewer, parent, result); + result = filteredResult; + } + } + return result; + } + + protected Object runCommand(AddWaveformHandler handler, Class annotation, String where, Boolean all) { + ContextInjectionFactory.inject(handler, eclipseCtx); + eclipseCtx.set(AddWaveformHandler.PARAM_WHERE_ID, where); + eclipseCtx.set(AddWaveformHandler.PARAM_ALL_ID, all.toString()); + eclipseCtx.set(DesignBrowser.class, this); + eclipseCtx.set(WaveformViewerPart.class, waveformViewerPart); + Object result = ContextInjectionFactory.invoke(handler, annotation, eclipseCtx); + return result; + } + + public Object[] getFilteredChildren() { + return getFilteredChildren(txTableViewer); + } + + public WaveformViewerPart getActiveWaveformViewerPart() { + return waveformViewerPart; + } + + class DBState { + + public DBState() { + this.expandedElements=treeViewer.getExpandedElements(); + this.treeSelection=treeViewer.getSelection(); + this.tableSelection=txTableViewer.getSelection(); + } + + public void apply() { + treeViewer.setExpandedElements(expandedElements); + treeViewer.setSelection(treeSelection, true); + txTableViewer.setSelection(tableSelection, true); + + } + + private Object[] expandedElements; + private ISelection treeSelection; + private ISelection tableSelection; } -*/ }; \ No newline at end of file diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformListPart.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformListPart.java deleted file mode 100644 index 912ee3a..0000000 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformListPart.java +++ /dev/null @@ -1,327 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015 MINRES Technologies GmbH and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * MINRES Technologies GmbH - initial API and implementation - *******************************************************************************/ -package com.minres.scviewer.e4.application.parts; - -import java.lang.annotation.Annotation; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import javax.inject.Named; - -import org.eclipse.e4.core.contexts.ContextInjectionFactory; -import org.eclipse.e4.core.contexts.IEclipseContext; -import org.eclipse.e4.core.di.annotations.CanExecute; -import org.eclipse.e4.core.di.annotations.Execute; -import org.eclipse.e4.core.di.annotations.Optional; -import org.eclipse.e4.core.services.events.IEventBroker; -import org.eclipse.e4.ui.di.Focus; -import org.eclipse.e4.ui.di.UIEventTopic; -import org.eclipse.e4.ui.model.application.ui.basic.MPart; -import org.eclipse.e4.ui.services.EMenuService; -import org.eclipse.e4.ui.services.IServiceConstants; -import org.eclipse.e4.ui.workbench.modeling.EPartService; -import org.eclipse.e4.ui.workbench.modeling.ESelectionService; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Text; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.swt.widgets.ToolItem; -import org.eclipse.wb.swt.ResourceManager; - -import com.minres.scviewer.database.IHierNode; -import com.minres.scviewer.database.ITx; -import com.minres.scviewer.database.IWaveform; -import com.minres.scviewer.e4.application.handlers.AddWaveformHandler; -import com.minres.scviewer.e4.application.provider.TxDbContentProvider; -import com.minres.scviewer.e4.application.provider.TxDbLabelProvider; - -public class WaveformListPart implements ISelectionChangedListener { - - private static final String POPUP_ID="com.minres.scviewer.e4.application.parts.WaveformList.popupmenu"; - - @Inject IEventBroker eventBroker; - - @Inject ESelectionService selectionService; - - @Inject EMenuService menuService; - - @Inject IEclipseContext eclipseCtx; - - - private Text nameFilter; - - private TableViewer txTableViewer; - - ToolItem appendItem, insertItem, insertAllItem, appendAllItem; - - WaveformAttributeFilter attributeFilter; - - int thisSelectionCount=0, otherSelectionCount=0; - - private WaveformViewerPart waveformViewerPart; - - @PostConstruct - public void createComposite(Composite parent) { - parent.setLayout(new GridLayout(1, false)); - - nameFilter = new Text(parent, SWT.BORDER); - nameFilter.setMessage("Enter text to filter waveforms"); - nameFilter.addModifyListener(new ModifyListener() { - @Override - public void modifyText(ModifyEvent e) { - attributeFilter.setSearchText(((Text) e.widget).getText()); - updateButtons(); - txTableViewer.refresh(); - } - }); - nameFilter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - attributeFilter = new WaveformAttributeFilter(); - - txTableViewer = new TableViewer(parent); - txTableViewer.setContentProvider(new TxDbContentProvider(true)); - txTableViewer.setLabelProvider(new TxDbLabelProvider()); - txTableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); - txTableViewer.addSelectionChangedListener(this); - txTableViewer.addFilter(attributeFilter); - txTableViewer.addDoubleClickListener(new IDoubleClickListener() { - @Override - public void doubleClick(DoubleClickEvent event) { - AddWaveformHandler myHandler = new AddWaveformHandler(); - Object result = runCommand(myHandler, CanExecute.class, "after", false); - if(result!=null && (Boolean)result) - ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); - } - }); - menuService.registerContextMenu(txTableViewer.getControl(), POPUP_ID); - - ToolBar toolBar = new ToolBar(parent, SWT.FLAT | SWT.RIGHT); - toolBar.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); - toolBar.setBounds(0, 0, 87, 20); - - appendItem = new ToolItem(toolBar, SWT.NONE); - appendItem.setToolTipText("Append after"); - appendItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/append_wave.png")); - appendItem.setEnabled(false); - appendItem.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - /* - eventBroker.post(WaveformViewerPart.ADD_WAVEFORM, - ((IStructuredSelection)txTableViewer.getSelection()).toList()); - ECommandService commandService = eclipseCtx.get(ECommandService.class); - EHandlerService handlerService = eclipseCtx.get(EHandlerService.class); - HashMap param=new HashMap<>(); - param.clear(); - //param.put("where", "after"); - ParameterizedCommand myCommand = commandService.createCommand(COMMAND_ID, param); - if(myCommand!=null)handlerService.executeHandler(myCommand); - */ - AddWaveformHandler myHandler = new AddWaveformHandler(); - Object result = runCommand(myHandler, CanExecute.class, "after", false); - if(result!=null && (Boolean)result) - ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); - } - - }); - - insertItem = new ToolItem(toolBar, SWT.NONE); - insertItem.setToolTipText("Insert before"); - insertItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/insert_wave.png")); - insertItem.setEnabled(false); - insertItem.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - AddWaveformHandler myHandler = new AddWaveformHandler(); - Object result = runCommand(myHandler, CanExecute.class, "before", false); - if(result!=null && (Boolean)result) - ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); - } - }); - new ToolItem(toolBar, SWT.SEPARATOR); - - appendAllItem = new ToolItem(toolBar, SWT.NONE); - appendAllItem.setToolTipText("Append all after"); - appendAllItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/append_all_waves.png")); - appendAllItem.setEnabled(false); - - new ToolItem(toolBar, SWT.SEPARATOR); - appendAllItem.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - Object[] all = getFilteredChildren(txTableViewer); - if(all.length>0){ - Object oldSel=selectionService.getSelection(); - selectionService.setSelection(new StructuredSelection(all)); - AddWaveformHandler myHandler = new AddWaveformHandler(); - Object result = runCommand(myHandler, CanExecute.class, "after", false); - if(result!=null && (Boolean)result) - ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); - selectionService.setSelection(oldSel); - } - } - }); - insertAllItem = new ToolItem(toolBar, SWT.NONE); - insertAllItem.setToolTipText("Insert all before"); - insertAllItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/insert_all_waves.png")); - insertAllItem.setEnabled(false); - insertAllItem.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - Object[] all = getFilteredChildren(txTableViewer); - if(all.length>0){ - Object oldSel=selectionService.getSelection(); - selectionService.setSelection(new StructuredSelection(all)); - AddWaveformHandler myHandler = new AddWaveformHandler(); - Object result = runCommand(myHandler, CanExecute.class, "before", false); - if(result!=null && (Boolean)result) - ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); - selectionService.setSelection(oldSel); - } - } - }); - } - - @Focus - public void setFocus() { - txTableViewer.getTable().setFocus(); - setSelection(txTableViewer.getSelection()); - } - - @Inject @Optional - public void getStatusEvent(@UIEventTopic(WaveformViewerPart.ACTIVE_WAVEFORMVIEW) WaveformViewerPart part) { - this.waveformViewerPart=part; - updateButtons(); - } - - @Override - public void selectionChanged(SelectionChangedEvent event) { - setSelection(event.getSelection()); - } - - protected void setSelection(ISelection iSelection) { - IStructuredSelection selection = (IStructuredSelection)iSelection; - if(selection.size()==0){ - appendItem.setEnabled(false); - } - selectionService.setSelection(selection); - thisSelectionCount=selection.toList().size(); - updateButtons(); - } - - @Inject - public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection, EPartService partService){ - MPart part = partService.getActivePart(); - if(part!=null && part.getObject() != this && selection!=null){ - if( selection instanceof IStructuredSelection) { - Object object= ((IStructuredSelection)selection).getFirstElement(); - if(object instanceof IHierNode&& ((IHierNode)object).getChildNodes().size()!=0) - txTableViewer.setInput(object); - otherSelectionCount = (object instanceof IWaveform || object instanceof ITx)?1:0; - } - } - updateButtons(); - } - - private void updateButtons() { - if(txTableViewer!=null && !insertItem.isDisposed() && !appendItem.isDisposed() && - !appendAllItem.isDisposed() && !insertAllItem.isDisposed()){ - AddWaveformHandler myHandler = new AddWaveformHandler(); - Object result = runCommand(myHandler, CanExecute.class, "after", false); - appendItem.setEnabled(result instanceof Boolean && (Boolean)result); - result = runCommand(myHandler, CanExecute.class, "after", true); - appendAllItem.setEnabled(result instanceof Boolean && (Boolean)result); - result = runCommand(myHandler, CanExecute.class, "before", false); - insertItem.setEnabled(result instanceof Boolean && (Boolean)result); - result = runCommand(myHandler, CanExecute.class, "before", true); - insertAllItem.setEnabled(result instanceof Boolean && (Boolean)result); - } - } - - public class WaveformAttributeFilter extends ViewerFilter { - - private String searchString; - - public void setSearchText(String s) { - this.searchString = ".*" + s + ".*"; - } - - @Override - public boolean select(Viewer viewer, Object parentElement, Object element) { - if (searchString == null || searchString.length() == 0) { - return true; - } - IWaveform p = (IWaveform) element; - if (p.getName().matches(searchString)) { - return true; - } - return false; - } - } - - public Object[] getFilteredChildren(){ - return getFilteredChildren(txTableViewer); - } - - protected Object[] getFilteredChildren(TableViewer viewer){ - Object parent = viewer.getInput(); - if(parent==null) return new Object[0]; - Object[] result = null; - if (parent != null) { - IStructuredContentProvider cp = (IStructuredContentProvider) viewer.getContentProvider(); - if (cp != null) { - result = cp.getElements(parent); - if(result==null) return new Object[0]; - for (int i = 0, n = result.length; i < n; ++i) { - if(result[i]==null) return new Object[0]; - } - } - } - ViewerFilter[] filters = viewer.getFilters(); - if (filters != null) { - for (ViewerFilter f:filters) { - Object[] filteredResult = f.filter(viewer, parent, result); - result = filteredResult; - } - } - return result; - } - - public WaveformViewerPart getActiveWaveformViewerPart() { - return waveformViewerPart; - } - - protected Object runCommand(AddWaveformHandler myHandler, Class annotation, String where, Boolean all) { - ContextInjectionFactory.inject(myHandler, eclipseCtx); - eclipseCtx.set(AddWaveformHandler.PARAM_WHERE_ID, where); - eclipseCtx.set(AddWaveformHandler.PARAM_ALL_ID, all.toString()); - Object result = ContextInjectionFactory.invoke(myHandler, annotation, eclipseCtx); - return result; - } - -} \ No newline at end of file diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewerPart.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewerPart.java index 3b8b78e..6355895 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewerPart.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewerPart.java @@ -57,10 +57,12 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import com.minres.scviewer.database.ITx; +import com.minres.scviewer.database.ITxRelation; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveformDb; import com.minres.scviewer.database.IWaveformDbFactory; import com.minres.scviewer.database.IWaveformEvent; +import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.swt.WaveformViewerFactory; import com.minres.scviewer.database.ui.GotoDirection; import com.minres.scviewer.database.ui.ICursor; @@ -87,7 +89,7 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang protected static final String ZOOM_LEVEL = "ZOOM_LEVEL"; protected static final long FILE_CHECK_INTERVAL = 60000; - + private String[] zoomLevel; public static final String ID = "com.minres.scviewer.ui.TxEditorPart"; //$NON-NLS-1$ @@ -126,6 +128,10 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang Map persistedState; + private Object browserState; + + private RelationType navigationRelationType=IWaveformViewer.NEXT_PREV_IN_STREAM ; + FileMonitor fileMonitor = new FileMonitor(); IModificationChecker fileChecker; @@ -487,11 +493,16 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang } public void moveSelected(int i) { - waveformPane.moveSelected(i); + waveformPane.moveSelectedTrack(i); } - public void moveSelection(GotoDirection direction) { - waveformPane.moveSelection(direction); + + public void moveSelection(GotoDirection direction ) { + moveSelection(direction, navigationRelationType); + } + + public void moveSelection(GotoDirection direction, RelationType relationType) { + waveformPane.moveSelection(direction, relationType); } public void moveCursor(GotoDirection direction) { @@ -528,4 +539,53 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang return waveformPane.getScaledTime(time); } + public void storeDesignBrowerState(Object browserState) { + this.browserState=browserState; + } + + public Object retrieveDesignBrowerState() { + return browserState; + } + + public List getAllRelationTypes() { + List res =new ArrayList<>(); + res.add(IWaveformViewer.NEXT_PREV_IN_STREAM); + res.addAll(database.getAllRelationTypes()); + return res; + } + + public List getSelectionRelationTypes() { + List res =new ArrayList<>(); + res.add(IWaveformViewer.NEXT_PREV_IN_STREAM); + ISelection selection = waveformPane.getSelection(); + if(selection instanceof IStructuredSelection && !selection.isEmpty()){ + IStructuredSelection sel=(IStructuredSelection) selection; + if(sel.getFirstElement() instanceof ITx){ + ITx tx = (ITx) sel.getFirstElement(); + for(ITxRelation rel:tx.getIncomingRelations()){ + if(!res.contains(rel.getRelationType())) + res.add(rel.getRelationType()); + } + for(ITxRelation rel:tx.getOutgoingRelations()){ + if(!res.contains(rel.getRelationType())) + res.add(rel.getRelationType()); + } + } + } + return res; + } + + public RelationType getRelationTypeFilter() { + return navigationRelationType; + } + + public void setNavigationRelationType(String relationName) { + setNavigationRelationType(RelationType.create(relationName)); + } + + public void setNavigationRelationType(RelationType relationType) { + if(navigationRelationType!=relationType) waveformPane.setHighliteRelation(relationType); + navigationRelationType=relationType; + } + } \ No newline at end of file diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/preferences/DefaultValuesInitializer.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/preferences/DefaultValuesInitializer.java index f83e8cf..5fe7302 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/preferences/DefaultValuesInitializer.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/preferences/DefaultValuesInitializer.java @@ -44,7 +44,8 @@ public class DefaultValuesInitializer extends AbstractPreferenceInitializer { colors[WaveformColors.CURSOR_TEXT.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_WHITE); colors[WaveformColors.MARKER.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_DARK_GRAY); colors[WaveformColors.MARKER_TEXT.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_WHITE); - colors[WaveformColors.REL_ARROW.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_YELLOW); + colors[WaveformColors.REL_ARROW.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_MAGENTA); + colors[WaveformColors.REL_ARROW_HIGHLITE.ordinal()] = SWTResourceManager.getColor(255, 128, 255); } @Override diff --git a/com.minres.scviewer.e4.product/SCViewer (restart).launch b/com.minres.scviewer.e4.product/SCViewer (restart).launch index cc2c08f..723a487 100644 --- a/com.minres.scviewer.e4.product/SCViewer (restart).launch +++ b/com.minres.scviewer.e4.product/SCViewer (restart).launch @@ -23,7 +23,7 @@ - + diff --git a/com.minres.scviewer.e4.product/icons/SCViewer.png b/com.minres.scviewer.e4.product/icons/SCViewer.png index ba03ec8801b8a9a73430b9f3c40db4216ea9f92e..cb5cbef33e5be45b4c66cad55237818d2b00ed53 100644 GIT binary patch delta 103426 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 y2ni5vP%A$|b - + diff --git a/com.opcoach.e4.preferences/.settings/org.eclipse.jdt.core.prefs b/com.opcoach.e4.preferences/.settings/org.eclipse.jdt.core.prefs index c537b63..d17b672 100644 --- a/com.opcoach.e4.preferences/.settings/org.eclipse.jdt.core.prefs +++ b/com.opcoach.e4.preferences/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/com.opcoach.e4.preferences/src/com/opcoach/e4/preferences/ScopedPreferenceStore.java b/com.opcoach.e4.preferences/src/com/opcoach/e4/preferences/ScopedPreferenceStore.java index 8916abb..3017845 100644 --- a/com.opcoach.e4.preferences/src/com/opcoach/e4/preferences/ScopedPreferenceStore.java +++ b/com.opcoach.e4.preferences/src/com/opcoach/e4/preferences/ScopedPreferenceStore.java @@ -79,7 +79,7 @@ public class ScopedPreferenceStore extends EventManager implements * The default context is the context where getDefault and setDefault * methods will search. This context is also used in the search. */ - private IScopeContext defaultContext = new DefaultScope(); + private IScopeContext defaultContext = DefaultScope.INSTANCE; /** * The nodeQualifer is the string used to look up the node in the contexts. diff --git a/com.opcoach.e4.preferences/src/com/opcoach/e4/preferences/internal/E4PreferenceRegistry.java b/com.opcoach.e4.preferences/src/com/opcoach/e4/preferences/internal/E4PreferenceRegistry.java index f1702fe..5623c9d 100644 --- a/com.opcoach.e4.preferences/src/com/opcoach/e4/preferences/internal/E4PreferenceRegistry.java +++ b/com.opcoach.e4.preferences/src/com/opcoach/e4/preferences/internal/E4PreferenceRegistry.java @@ -26,9 +26,7 @@ import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.core.di.annotations.Creatable; import org.eclipse.e4.core.services.contributions.IContributionFactory; import org.eclipse.e4.core.services.log.Logger; -import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.IPreferenceNode; -import org.eclipse.jface.preference.IPreferencePage; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceManager; import org.eclipse.jface.preference.PreferenceNode; @@ -41,6 +39,7 @@ import org.eclipse.swt.widgets.Label; import com.opcoach.e4.preferences.IPreferenceStoreProvider; import com.opcoach.e4.preferences.ScopedPreferenceStore; +@SuppressWarnings("restriction") @Creatable public class E4PreferenceRegistry {