From be87792dad86b3dbb7eb5d61723195321a89ba75 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Tue, 27 Jun 2023 16:00:57 +0200 Subject: [PATCH] uadds and pdates some graphics and menu items --- .../scviewer/database/fst/FstDbLoader.java | 7 +- .../scviewer/database/fst/FstFileParser.java | 2 +- .../scviewer/database/fst/FstLibrary.java | 13 +++ .../scviewer/database/fst/FstSignal.java | 42 +++++++--- .../database/fst/IFstDatabaseBuilder.java | 2 +- .../scviewer/database/ftr/TxGenerator.java | 5 ++ .../scviewer/database/ftr/TxStream.java | 5 ++ .../scviewer/database/sqlite/TxGenerator.java | 5 ++ .../scviewer/database/sqlite/TxStream.java | 6 ++ .../scviewer/database/text/TxGenerator.java | 5 ++ .../scviewer/database/text/TxStream.java | 5 ++ .../ui/swt/internal/WaveformView.java | 4 +- .../scviewer/database/vcd/VCDSignal.java | 5 ++ .../scviewer/database/DirectionType.java | 34 ++++++++ .../scviewer/database/EmptyWaveform.java | 5 ++ .../minres/scviewer/database/IWaveform.java | 3 +- .../Application.e4xmi | 3 + .../icons/arrow_in.png | Bin 0 -> 600 bytes .../icons/arrow_inout.png | Bin 0 -> 551 bytes .../icons/arrow_out.png | Bin 0 -> 594 bytes .../handlers/AddWaveformHandler.java | 6 +- .../provider/TxDbLabelProvider.java | 76 ++++++++++++++++-- 22 files changed, 203 insertions(+), 30 deletions(-) create mode 100644 plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/DirectionType.java create mode 100644 plugins/com.minres.scviewer.e4.application/icons/arrow_in.png create mode 100644 plugins/com.minres.scviewer.e4.application/icons/arrow_inout.png create mode 100644 plugins/com.minres.scviewer.e4.application/icons/arrow_out.png diff --git a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstDbLoader.java b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstDbLoader.java index 3196e8a..d9be5da 100644 --- a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstDbLoader.java +++ b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstDbLoader.java @@ -131,11 +131,11 @@ public class FstDbLoader implements IWaveformDbLoader, IFstDatabaseBuilder { * @see com.minres.scviewer.database.vcd.ITraceBuilder#newNet(java.lang.String, int, int) */ @Override - public void newNet(String name, int handle, int width, boolean alias) { + public void newNet(String name, int handle, int width, int direction, boolean alias) { String netName = moduleStack.isEmpty()? name: moduleStack.peek()+"."+name; IWaveform signal = width==0? - new FstSignal(this, handle, netName, width): - new FstSignal(this, handle, netName, width); + new FstSignal(this, handle, netName, width, direction): + new FstSignal(this, handle, netName, direction, width); signals.add(signal); pcs.firePropertyChange(IWaveformDbLoader.SIGNAL_ADDED, null, Iterables.getLast(signals)); } @@ -150,6 +150,7 @@ public class FstDbLoader implements IWaveformDbLoader, IFstDatabaseBuilder { } public void setMaxTime(long maxTime, int timeScale) { + if(timeScale>0) timeScale=-timeScale; long eff_time_scale=timeScale-IWaveformDb.databaseTimeScale; this.timeScaleFactor = calculateTimescaleMultipierPower(eff_time_scale); this.maxTime = maxTime*timeScaleFactor; diff --git a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstFileParser.java b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstFileParser.java index eaf3eb9..fe8b404 100644 --- a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstFileParser.java +++ b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstFileParser.java @@ -54,7 +54,7 @@ class FstFileParser { case HT_VAR: HierVar v = new HierVar(); FstLibrary.getHierVar(p, v); - builder.newNet(v.name, v.handle, v.length, v.is_alias!=0); + builder.newNet(v.name, v.handle, v.length, v.direction, v.is_alias!=0); break; case HT_ATTRBEGIN: HierAttr attr = new HierAttr(); diff --git a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstLibrary.java b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstLibrary.java index 5654025..649390d 100644 --- a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstLibrary.java +++ b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstLibrary.java @@ -95,6 +95,19 @@ public class FstLibrary { this.varType = varType; } }; + + public static enum VarDir { + FST_VD_IMPLICIT (0), + FST_VD_INPUT (1), + FST_VD_OUTPUT (2), + FST_VD_INOUT (3), + FST_VD_BUFFER (4), + FST_VD_LINKAGE (5); + public final int varDir; + private VarDir(int varDir) { + this.varDir = varDir; + } + }; public static enum AttrType { FST_AT_MISC ( 0), /* self-contained: does not need matching FST_HT_ATTREND */ diff --git a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstSignal.java b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstSignal.java index 8ba21f4..9765844 100644 --- a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstSignal.java +++ b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/FstSignal.java @@ -10,6 +10,7 @@ *******************************************************************************/ package com.minres.scviewer.database.fst; +import com.minres.scviewer.database.DirectionType; import com.minres.scviewer.database.EventEntry; import com.minres.scviewer.database.EventList; import com.minres.scviewer.database.HierNode; @@ -21,7 +22,9 @@ import com.minres.scviewer.database.WaveformType; public class FstSignal extends HierNode implements IWaveform { private final FstDbLoader loader; - + + private final int direction; + private final int id; private final String fullName; @@ -29,20 +32,21 @@ public class FstSignal extends HierNode implements IWaveform { private final int width; private final IEventList values; - + public FstSignal(FstDbLoader loader, String name) { - this(loader, 0, name, 1); + this(loader, 0, name, 0, 1); } public FstSignal(FstDbLoader loader, int id, String name) { - this(loader, id,name,1); + this(loader, id,name, 0,1); } - public FstSignal(FstDbLoader loader, int id, String name, int width) { + public FstSignal(FstDbLoader loader, int id, String name, int direction, int width) { super(name); fullName=name; this.loader=loader; this.id=id; + this.direction = direction; this.width=width; this.values=new EventList(); } @@ -52,6 +56,7 @@ public class FstSignal extends HierNode implements IWaveform { fullName=name; this.loader=o.loader; this.id=id; + this.direction = 0; this.width=o.width; this.values=o.values; } @@ -78,14 +83,14 @@ public class FstSignal extends HierNode implements IWaveform { return getEvents().get(time); } - @Override - public IEvent[] getEventsBeforeTime(long time) { - EventEntry e = getEvents().floorEntry(time); - if(e==null) - return new IEvent[] {}; - else - return getEvents().floorEntry(time).events; - } + @Override + public IEvent[] getEventsBeforeTime(long time) { + EventEntry e = getEvents().floorEntry(time); + if(e==null) + return new IEvent[] {}; + else + return getEvents().floorEntry(time).events; + } @Override public boolean isSame(IWaveform other) { @@ -112,4 +117,15 @@ public class FstSignal extends HierNode implements IWaveform { return "signal"; } + @Override + public DirectionType getDirection() { + switch(direction) { + case 1: return DirectionType.INPUT; + case 2: return DirectionType.OUTPUT; + case 3: return DirectionType.INOUT; + case 4: return DirectionType.BUFFER; + case 5: return DirectionType.LINKAGE; + } + return DirectionType.IMPLICIT; + } } diff --git a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/IFstDatabaseBuilder.java b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/IFstDatabaseBuilder.java index fa9cc81..07d0436 100644 --- a/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/IFstDatabaseBuilder.java +++ b/plugins/com.minres.scviewer.database.fst/src/com/minres/scviewer/database/fst/IFstDatabaseBuilder.java @@ -35,7 +35,7 @@ public interface IFstDatabaseBuilder { * @param width the width, -1 equals real, 0... is a bit vector * @return the net id */ - public void newNet(String netName, int handle, int width, boolean alias) ; + public void newNet(String netName, int handle, int width, int direction, boolean alias) ; /** * Gets the net width. diff --git a/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/TxGenerator.java b/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/TxGenerator.java index 21ed04a..f755a92 100644 --- a/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/TxGenerator.java +++ b/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/TxGenerator.java @@ -14,6 +14,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import com.minres.scviewer.database.DirectionType; import com.minres.scviewer.database.IEventList; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.InputFormatException; @@ -119,4 +120,8 @@ class TxGenerator extends AbstractTxStream { return ((AbstractTxStream)parent).getFullName()+"."+name; } + @Override + public DirectionType getDirection() { + return DirectionType.IMPLICIT; + } } diff --git a/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/TxStream.java b/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/TxStream.java index 5c95e5b..c8ab22c 100644 --- a/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/TxStream.java +++ b/plugins/com.minres.scviewer.database.ftr/src/com/minres/scviewer/database/ftr/TxStream.java @@ -14,6 +14,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import com.minres.scviewer.database.DirectionType; import com.minres.scviewer.database.IEventList; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.InputFormatException; @@ -96,4 +97,8 @@ class TxStream extends AbstractTxStream { return events; } + @Override + public DirectionType getDirection() { + return DirectionType.IMPLICIT; + } } diff --git a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxGenerator.java b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxGenerator.java index c773d84..ab47980 100644 --- a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxGenerator.java +++ b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxGenerator.java @@ -16,6 +16,7 @@ import java.sql.SQLException; import java.util.Map; import java.util.TreeMap; +import com.minres.scviewer.database.DirectionType; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.sqlite.db.IDatabase; import com.minres.scviewer.database.sqlite.db.SQLiteDatabaseSelectHandler; @@ -76,4 +77,8 @@ public class TxGenerator extends AbstractTxStream { return transactions; } + @Override + public DirectionType getDirection() { + return DirectionType.IMPLICIT; + } } diff --git a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java index a628600..65b2ecf 100644 --- a/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java +++ b/plugins/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; +import com.minres.scviewer.database.DirectionType; import com.minres.scviewer.database.IEvent; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.sqlite.db.IDatabase; @@ -102,4 +103,9 @@ public class TxStream extends AbstractTxStream { public String getKind() { return scvStream.getKind(); } + + @Override + public DirectionType getDirection() { + return DirectionType.IMPLICIT; + } } diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxGenerator.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxGenerator.java index 64c4b3f..cafc839 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxGenerator.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxGenerator.java @@ -14,6 +14,7 @@ package com.minres.scviewer.database.text; import java.util.ArrayList; import java.util.List; +import com.minres.scviewer.database.DirectionType; import com.minres.scviewer.database.IWaveform; /** @@ -93,4 +94,8 @@ class TxGenerator extends AbstractTxStream { return ((AbstractTxStream)parent).getFullName()+"."+name; } + @Override + public DirectionType getDirection() { + return DirectionType.IMPLICIT; + } } diff --git a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxStream.java b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxStream.java index 2b07cad..f19feb1 100644 --- a/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxStream.java +++ b/plugins/com.minres.scviewer.database.text/src/com/minres/scviewer/database/text/TxStream.java @@ -11,6 +11,7 @@ *******************************************************************************/ package com.minres.scviewer.database.text; +import com.minres.scviewer.database.DirectionType; import com.minres.scviewer.database.IWaveform; /** @@ -55,4 +56,8 @@ class TxStream extends AbstractTxStream { return kind; } + @Override + public DirectionType getDirection() { + return DirectionType.IMPLICIT; + } } diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java index 3bcf249..1be52b1 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java @@ -651,7 +651,7 @@ public class WaveformView implements IWaveformView { private void updateValueList() { final Long time = getCursorTime(); - for (TrackEntry entry : streams) { + streams.stream()/*.parallel()*/.forEach(entry -> { if (entry.waveform.getType() == WaveformType.SIGNAL) { IEvent[] value = entry.waveform.getEventsBeforeTime(time); if (value[0] instanceof BitVector) { @@ -710,7 +710,7 @@ public class WaveformView implements IWaveformView { } } - } + }); int width = calculateValueWidth(); valueList.setSize(width, tracksVerticalHeight); valueListScrolled.setMinSize(width, tracksVerticalHeight); diff --git a/plugins/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDSignal.java b/plugins/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDSignal.java index f0c88a0..9055f99 100644 --- a/plugins/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDSignal.java +++ b/plugins/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDSignal.java @@ -10,6 +10,7 @@ *******************************************************************************/ package com.minres.scviewer.database.vcd; +import com.minres.scviewer.database.DirectionType; import com.minres.scviewer.database.EventEntry; import com.minres.scviewer.database.EventList; import com.minres.scviewer.database.HierNode; @@ -113,4 +114,8 @@ public class VCDSignal extends HierNode implements IWaveform { return "signal"; } + @Override + public DirectionType getDirection() { + return DirectionType.IMPLICIT; + } } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/DirectionType.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/DirectionType.java new file mode 100644 index 0000000..9e29e42 --- /dev/null +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/DirectionType.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2020 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; + +/** + * The Enum DirectionType. + */ +public enum DirectionType { + IMPLICIT, + INPUT, + OUTPUT, + INOUT, + BUFFER, + LINKAGE; + + public String toString() { + switch(this) { + case INPUT: return "I"; + case OUTPUT: return "O"; + case INOUT: return "IO"; + case BUFFER: return "B"; + case LINKAGE: return "L"; + default: return ""; + } + } +} diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/EmptyWaveform.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/EmptyWaveform.java index dcf7d74..696fed4 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/EmptyWaveform.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/EmptyWaveform.java @@ -123,4 +123,9 @@ public class EmptyWaveform implements IWaveform { return 0; } + @Override + public DirectionType getDirection() { + return DirectionType.IMPLICIT; + } + } diff --git a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveform.java b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveform.java index 11b74a0..562fe4e 100644 --- a/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveform.java +++ b/plugins/com.minres.scviewer.database/src/com/minres/scviewer/database/IWaveform.java @@ -11,7 +11,7 @@ package com.minres.scviewer.database; -// TODO: Auto-generated Javadoc + /** * The Interface IWaveform. * @@ -19,6 +19,7 @@ package com.minres.scviewer.database; */ public interface IWaveform extends IHierNode { + public DirectionType getDirection(); /** * Gets the id. * diff --git a/plugins/com.minres.scviewer.e4.application/Application.e4xmi b/plugins/com.minres.scviewer.e4.application/Application.e4xmi index e2b3bd8..714cf7a 100644 --- a/plugins/com.minres.scviewer.e4.application/Application.e4xmi +++ b/plugins/com.minres.scviewer.e4.application/Application.e4xmi @@ -206,6 +206,9 @@ + + + diff --git a/plugins/com.minres.scviewer.e4.application/icons/arrow_in.png b/plugins/com.minres.scviewer.e4.application/icons/arrow_in.png new file mode 100644 index 0000000000000000000000000000000000000000..745c65134db478a64016d63a7104e585452f2b9f GIT binary patch literal 600 zcmV-e0;m0nP)PbXFR5;7s zk=srhQ51%Gi+LO^77wV16dAzbG@wAMB7&i`(b(8xDqyU&#ij;pOFf{D;3PUo6_qH7 z@zCD%DY)SY{?6Vev}G>5=v^;XviDy5`&RNV6#!MZ;uAv`-s;%-AVco=6~AW@oV#X; zoCz$&Z(d;jHilq%pcXjuFe4{!G(v;>9DU>S79m;;B2ox|%Nj+MJXx5%p2GUiG!j?S z2%Y&cbj&LR9?=RJ#?#^`7Ar|SI}E|PVW`sPXn8=Gxtzq(^&D1yr10dMQz3B4@Y_lP zuSye$7RF#%H`Lg#dZzwixa6krr|(Pf7aR(KLtwFRkwCIM1ACSQfoTSJFpr@l7akX# z@D=Rv9@rED+g2a?Hy@G7U^9C3eb%8a_?P-$1a5i9WKAS#+qN85)~E=vH{A*SvKG1z z?dVFiLHkbgJ49E`%y@DfW=~%tej1}mHwt<_YB9MVMN|yeVJaZ7Jh>K;f_N^45j&cq zYibm9%abEw2)<1>?5kF^y-^EP;Mg%$3H-V=jgh?XuO0tco$p(rOKHJp92n09(Vu4V zFxf1qxGkd?5d9d=dtu7-P^)33OCji3)S!K#g=w8v*PN>ytji{-6HO9rn%8(HWsOpaN*gR#GpYXhHKL|EB8l4*TSU_vTR+aX-(Oi?S;8XyR2It;Uw(aI)9^S|=&95eX@({k9USGy;sUSUzeJ^< zMds$`SXy48v$4bI@E9?)it=aq5A%!jd|dcIDK=`4J{pRP&HSggJxd`56RH!pk4D8J p8dUC|epvAzhprq*3?{^oguj5GN{z3E7kmH!002ovPDHLkV1kL#`6U1V literal 0 HcmV?d00001 diff --git a/plugins/com.minres.scviewer.e4.application/icons/arrow_out.png b/plugins/com.minres.scviewer.e4.application/icons/arrow_out.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9bc42bec16e3077a9680e7af0f90395bfeb60c GIT binary patch literal 594 zcmV-Y0%pKpR5(n-OJ3xTo| zzV{Az-rC_Vje#(D=jSF0=P$d$OcdrqWdZ50OISNyhHKXf!jg068_0ZrhDT>{L~4Gy zBdqY8Z{N|1SMT6qEsm9X5`57DGIJ6{tUiU*w*<03GFWKb!_-I5B@^$yqd8xVVYQKh zR0+dTu)vlxgG|$F-~JTf!pHvB;^}=nIGMw(LqWZ0Ajmc)rbZwghz$N6FuFDPw?M3V zxyd6>bK=mgT-5{T&WPHE+aleX_AmP13}~n2@i(LDRmJ8PMrCl_&@?^QbAJr{3Xe7{ zRYXL~lWa_vCNY#Ts)2%lP|*kDnyzJ7?dSAQ`{;tavxCB5aI&_5*@FmdS#$HE!Hso; z?9Gj1PKm*v6<|v1p?jjC$@D`cYYE)_AVDgN3~tc{;W|CxdRiyDU-Jm$-Iy+k=wIpu zaqU^Lc$`4uXdceI71qtpa9aZ_T0~1>NOA<)R1XMW9DzMQjIr$@2E+2ogl@2IS%W^B gtbN=AP4XIk0RxY;jV+3>Hvj+t07*qoM6N<$f-d$A%>V!Z literal 0 HcmV?d00001 diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AddWaveformHandler.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AddWaveformHandler.java index 177c131..2711512 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AddWaveformHandler.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/AddWaveformHandler.java @@ -61,9 +61,9 @@ public class AddWaveformHandler { @Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection) { if(designBrowser==null) designBrowser = getListPart( partService); if(designBrowser!=null && selection.size()>0){ - List sel=selection.toList(); - designBrowser.getActiveWaveformViewerPart().addStreamsToList(sel.toArray(new IWaveform[]{}), - "before".equalsIgnoreCase(where)); //$NON-NLS-1$ + @SuppressWarnings("unchecked") + IWaveform[] sel=(IWaveform[]) selection.toList().stream().filter(t -> t instanceof IWaveform).toArray(IWaveform[]::new); + designBrowser.getActiveWaveformViewerPart().addStreamsToList(sel, "before".equalsIgnoreCase(where)); //$NON-NLS-1$ } } diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/provider/TxDbLabelProvider.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/provider/TxDbLabelProvider.java index 6260f6b..f230967 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/provider/TxDbLabelProvider.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/provider/TxDbLabelProvider.java @@ -13,11 +13,16 @@ package com.minres.scviewer.e4.application.provider; import java.util.ArrayList; import java.util.List; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.DecorationOverlayIcon; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; +import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; import org.eclipse.wb.swt.ResourceManager; +import com.minres.scviewer.database.DirectionType; import com.minres.scviewer.database.IHierNode; import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveformDb; @@ -49,6 +54,32 @@ public class TxDbLabelProvider implements ILabelProvider { /** The wave. */ private Image wave; + /** The wave. */ + private Image input; + + /** The wave. */ + private Image output; + + /** The wave. */ + private Image inout; + + /** The signal. */ + private Image signal_in; + + /** The wave. */ + private Image wave_in; + + /** The signal. */ + private Image signal_out; + + /** The wave. */ + private Image wave_out; + + /** The signal. */ + private Image signal_inout; + + /** The wave. */ + private Image wave_inout; /** * Instantiates a new tx db label provider. */ @@ -64,7 +95,16 @@ public class TxDbLabelProvider implements ILabelProvider { } signal=ResourceManager.getPluginImage(Constants.PLUGIN_ID, "icons/signal.png"); //$NON-NLS-1$ //$NON-NLS-2$ - wave=ResourceManager.getPluginImage(Constants.PLUGIN_ID, "icons/wave.png"); //$NON-NLS-1$ //$NON-NLS-2$ + wave=ResourceManager.getPluginImage(Constants.PLUGIN_ID, "icons/wave.png"); //$NON-NLS-1$ //$NON-NLS-2$s + input=ResourceManager.getPluginImage(Constants.PLUGIN_ID, "icons/arrow_in.png"); //$NON-NLS-1$ //$NON-NLS-2$s + output=ResourceManager.getPluginImage(Constants.PLUGIN_ID, "icons/arrow_out.png"); //$NON-NLS-1$ //$NON-NLS-2$s + inout=ResourceManager.getPluginImage(Constants.PLUGIN_ID, "icons/arrow_inout.png"); //$NON-NLS-1$ //$NON-NLS-2$s + signal_in = new DecorationOverlayIcon(signal, new ImageDescriptor[]{ImageDescriptor.createFromImage(input)}).createImage(); + wave_in = new DecorationOverlayIcon(wave, new ImageDescriptor[]{ImageDescriptor.createFromImage(input)}).createImage(); + signal_out = new DecorationOverlayIcon(signal, new ImageDescriptor[]{ImageDescriptor.createFromImage(output)}).createImage(); + wave_out = new DecorationOverlayIcon(wave, new ImageDescriptor[]{ImageDescriptor.createFromImage(output)}).createImage(); + signal_inout = new DecorationOverlayIcon(signal, new ImageDescriptor[]{ImageDescriptor.createFromImage(inout)}).createImage(); + wave_inout = new DecorationOverlayIcon(wave, new ImageDescriptor[]{ImageDescriptor.createFromImage(inout)}).createImage(); } /** @@ -88,7 +128,12 @@ public class TxDbLabelProvider implements ILabelProvider { */ @Override public void dispose() { - // no resources to dispose + signal_in.dispose(); + wave_in.dispose(); + signal_out.dispose(); + wave_out.dispose(); + signal_inout.dispose(); + wave_inout.dispose(); } /** @@ -139,10 +184,29 @@ public class TxDbLabelProvider implements ILabelProvider { case FILTER: break; case SIGNAL: - if(((IWaveform) element).getWidth()==1) - return signal; - else - return wave; + IWaveform wf = (IWaveform) element; + switch(wf.getDirection()) { + default: + if(((IWaveform) element).getWidth()==1) + return signal; + else + return wave; + case INPUT: + if(((IWaveform) element).getWidth()==1) + return signal_in; + else + return wave_in; + case OUTPUT: + if(((IWaveform) element).getWidth()==1) + return signal_out; + else + return wave_out; + case INOUT: + if(((IWaveform) element).getWidth()==1) + return signal_inout; + else + return wave_inout; + } default: break; }