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 0000000..745c651 Binary files /dev/null and b/plugins/com.minres.scviewer.e4.application/icons/arrow_in.png differ diff --git a/plugins/com.minres.scviewer.e4.application/icons/arrow_inout.png b/plugins/com.minres.scviewer.e4.application/icons/arrow_inout.png new file mode 100644 index 0000000..1b76367 Binary files /dev/null and b/plugins/com.minres.scviewer.e4.application/icons/arrow_inout.png differ 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 0000000..2e9bc42 Binary files /dev/null and b/plugins/com.minres.scviewer.e4.application/icons/arrow_out.png differ 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; }