Compare commits

..

4 Commits

Author SHA1 Message Date
b398a07fd7 Merge branch 'hotfix/#29_cannot_delete_signals' 2020-03-13 16:01:29 +01:00
732bd82034 fix #29 cannot delete VCD signals
comparison of objects were done by idendity not .equals()
2020-03-13 16:01:16 +01:00
9f4f71046d Merge branch 'hotfix/#27_add_filter' 2020-03-12 21:59:01 +01:00
d73b01f77d fix #27 'Add filter to hierarchy viewer' 2020-03-12 18:17:47 +01:00
7 changed files with 66 additions and 32 deletions

View File

@@ -193,7 +193,7 @@ public class TxStream extends HierNode implements ITxStream<ITxEvent> {
@Override @Override
public Boolean equals(IWaveform other) { public Boolean equals(IWaveform other) {
return(other instanceof TxStream && this.getId()==other.getId()); return(other instanceof TxStream && this.getId().equals(other.getId()));
} }
} }

View File

@@ -117,7 +117,7 @@ public class VCDSignal<T> extends HierNode implements ISignal<T> {
@Override @Override
public Boolean equals(IWaveform other) { public Boolean equals(IWaveform other) {
return(other instanceof VCDSignal<?> && this.getId()==other.getId()); return( other instanceof VCDSignal<?> && this.getId().equals(other.getId()));
} }
@Override @Override

View File

@@ -140,7 +140,7 @@ public class WaveformDb extends HierNode implements IWaveformDb {
break; break;
} }
} }
if(name == hier[hier.length-1]){ //leaf if(name.equals(hier[hier.length-1])){ //leaf
if(n1!=null) { if(n1!=null) {
if(n1 instanceof HierNode){ if(n1 instanceof HierNode){
node.getChildNodes().remove(n1); node.getChildNodes().remove(n1);

View File

@@ -9,6 +9,7 @@ public class Messages extends NLS {
public static String DesignBrowser_12; public static String DesignBrowser_12;
public static String DesignBrowser_16; public static String DesignBrowser_16;
public static String DesignBrowser_2; public static String DesignBrowser_2;
public static String DesignBrowser_3;
public static String DesignBrowser_4; public static String DesignBrowser_4;
public static String DesignBrowser_8; public static String DesignBrowser_8;
public static String LoadingWaveformDb_0; public static String LoadingWaveformDb_0;

View File

@@ -3,6 +3,7 @@ AboutDialog_1=\nCopyright (c) 2015, 2019 MINRES Technologies GmbH and others.\n\
DesignBrowser_12=Append all after DesignBrowser_12=Append all after
DesignBrowser_16=Insert all before DesignBrowser_16=Insert all before
DesignBrowser_2=Enter text to filter waveforms DesignBrowser_2=Enter text to filter waveforms
DesignBrowser_3=Enter text to filter hierarchy
DesignBrowser_4=Append after DesignBrowser_4=Append after
DesignBrowser_8=Insert before DesignBrowser_8=Insert before
LoadingWaveformDb_0=Database loading... LoadingWaveformDb_0=Database loading...

View File

@@ -68,6 +68,7 @@ import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.wb.swt.ResourceManager; import org.eclipse.wb.swt.ResourceManager;
import org.eclipse.wb.swt.SWTResourceManager; import org.eclipse.wb.swt.SWTResourceManager;
import com.minres.scviewer.database.HierNode;
import com.minres.scviewer.database.IHierNode; import com.minres.scviewer.database.IHierNode;
import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITx;
import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveform;
@@ -110,8 +111,17 @@ public class DesignBrowser {
/** The tree viewer. */ /** The tree viewer. */
private TreeViewer treeViewer; private TreeViewer treeViewer;
/** The name filter of the design browser tree. */
private Text treeNameFilter;
/** The attribute filter. */
WaveformAttributeFilter treeAttributeFilter;
/** The name filter. */ /** The name filter. */
private Text nameFilter; private Text tableNameFilter;
/** The attribute filter. */
WaveformAttributeFilter tableAttributeFilter;
/** The tx table viewer. */ /** The tx table viewer. */
private TableViewer txTableViewer; private TableViewer txTableViewer;
@@ -119,9 +129,6 @@ public class DesignBrowser {
/** The append all item. */ /** The append all item. */
ToolItem appendItem, insertItem, insertAllItem, appendAllItem; ToolItem appendItem, insertItem, insertAllItem, appendAllItem;
/** The attribute filter. */
WaveformAttributeFilter attributeFilter;
/** The other selection count. */ /** The other selection count. */
int thisSelectionCount=0, otherSelectionCount=0; int thisSelectionCount=0, otherSelectionCount=0;
@@ -189,10 +196,25 @@ public class DesignBrowser {
*/ */
public void createTreeViewerComposite(Composite parent) { public void createTreeViewerComposite(Composite parent) {
parent.setLayout(new GridLayout(1, false)); parent.setLayout(new GridLayout(1, false));
treeNameFilter = new Text(parent, SWT.BORDER);
treeNameFilter.setMessage(Messages.DesignBrowser_3);
treeNameFilter.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
treeAttributeFilter.setSearchText(((Text) e.widget).getText());
treeViewer.refresh();
}
});
treeNameFilter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
treeAttributeFilter = new WaveformAttributeFilter();
treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
treeViewer.setContentProvider(new TxDbContentProvider()); treeViewer.setContentProvider(new TxDbContentProvider());
treeViewer.setLabelProvider(new TxDbLabelProvider()); treeViewer.setLabelProvider(new TxDbLabelProvider());
treeViewer.addFilter(treeAttributeFilter);
treeViewer.setUseHashlookup(true); treeViewer.setUseHashlookup(true);
treeViewer.setAutoExpandLevel(2); treeViewer.setAutoExpandLevel(2);
treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@@ -223,25 +245,25 @@ public class DesignBrowser {
public void createTableComposite(Composite parent) { public void createTableComposite(Composite parent) {
parent.setLayout(new GridLayout(1, false)); parent.setLayout(new GridLayout(1, false));
nameFilter = new Text(parent, SWT.BORDER); tableNameFilter = new Text(parent, SWT.BORDER);
nameFilter.setMessage(Messages.DesignBrowser_2); tableNameFilter.setMessage(Messages.DesignBrowser_2);
nameFilter.addModifyListener(new ModifyListener() { tableNameFilter.addModifyListener(new ModifyListener() {
@Override @Override
public void modifyText(ModifyEvent e) { public void modifyText(ModifyEvent e) {
attributeFilter.setSearchText(((Text) e.widget).getText()); tableAttributeFilter.setSearchText(((Text) e.widget).getText());
updateButtons(); updateButtons();
txTableViewer.refresh(); txTableViewer.refresh();
} }
}); });
nameFilter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); tableNameFilter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
attributeFilter = new WaveformAttributeFilter(); tableAttributeFilter = new WaveformAttributeFilter();
txTableViewer = new TableViewer(parent); txTableViewer = new TableViewer(parent);
txTableViewer.setContentProvider(new TxDbContentProvider(true)); txTableViewer.setContentProvider(new TxDbContentProvider(true));
txTableViewer.setLabelProvider(new TxDbLabelProvider()); txTableViewer.setLabelProvider(new TxDbLabelProvider());
txTableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); txTableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
txTableViewer.addFilter(attributeFilter); txTableViewer.addFilter(tableAttributeFilter);
txTableViewer.addDoubleClickListener(new IDoubleClickListener() { txTableViewer.addDoubleClickListener(new IDoubleClickListener() {
@Override @Override
public void doubleClick(DoubleClickEvent event) { public void doubleClick(DoubleClickEvent event) {
@@ -469,12 +491,24 @@ public class DesignBrowser {
if (searchString == null || searchString.length() == 0) { if (searchString == null || searchString.length() == 0) {
return true; return true;
} }
IWaveform p = (IWaveform) element; if(element instanceof IWaveform) {
try { IWaveform p = (IWaveform) element;
if (p.getName().matches(searchString)) try {
if (p.getName().matches(searchString))
return true;
} catch (PatternSyntaxException e) {
return true; return true;
} catch (PatternSyntaxException e) { }
} else if(element instanceof IWaveformDb) {
return true; return true;
} else if(element instanceof HierNode) {
HierNode n = (HierNode) element;
try {
if (n.getFullName().matches(searchString))
return true;
} catch (PatternSyntaxException e) {
return true;
}
} }
return false; return false;
} }

View File

@@ -669,12 +669,9 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
* @param persistedState the persisted state * @param persistedState the persisted state
*/ */
protected void saveWaveformViewerState(Map<String, String> persistedState) { protected void saveWaveformViewerState(Map<String, String> persistedState) {
Integer index;
boolean isStream = false;
persistedState.put(SHOWN_WAVEFORM + "S", Integer.toString(waveformPane.getStreamList().size())); //$NON-NLS-1$ persistedState.put(SHOWN_WAVEFORM + "S", Integer.toString(waveformPane.getStreamList().size())); //$NON-NLS-1$
index = 0; Integer index = 0;
for (TrackEntry trackEntry : waveformPane.getStreamList()) { for (TrackEntry trackEntry : waveformPane.getStreamList()) {
if(trackEntry.isStream()) { isStream=true; }
persistedState.put(SHOWN_WAVEFORM + index, trackEntry.waveform.getFullName()); persistedState.put(SHOWN_WAVEFORM + index, trackEntry.waveform.getFullName());
persistedState.put(SHOWN_WAVEFORM + index + VALUE_DISPLAY, trackEntry.valueDisplay.toString()); persistedState.put(SHOWN_WAVEFORM + index + VALUE_DISPLAY, trackEntry.valueDisplay.toString());
persistedState.put(SHOWN_WAVEFORM + index + WAVE_DISPLAY, trackEntry.waveDisplay.toString()); persistedState.put(SHOWN_WAVEFORM + index + WAVE_DISPLAY, trackEntry.waveDisplay.toString());
@@ -693,23 +690,24 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
// get selected transaction of a stream // get selected transaction of a stream
ISelection selection = waveformPane.getSelection(); ISelection selection = waveformPane.getSelection();
if (!selection.isEmpty() && isStream) { if (!selection.isEmpty()) {
List<Object> t = getISelection(selection); List<Object> t = getISelection(selection);
ITx tx = (ITx) t.get(0); if(t.get(0) instanceof ITx) {
TrackEntry te = (TrackEntry) t.get(1); ITx tx = (ITx) t.get(0);
// get transaction id TrackEntry te = (TrackEntry) t.get(1);
persistedState.put(SELECTED_TX_ID, Long.toString(tx.getId())); // get transaction id
//get TrackEntry name persistedState.put(SELECTED_TX_ID, Long.toString(tx.getId()));
String name = te.getStream().getFullName(); //get TrackEntry name
persistedState.put(SELECTED_TRACKENTRY_NAME, name); String name = te.getStream().getFullName();
persistedState.put(SELECTED_TRACKENTRY_NAME, name);
}
} }
} }
protected List<Object> getISelection(ISelection selection){ protected List<Object> getISelection(ISelection selection){
List<Object> result = new LinkedList<Object> (); List<Object> result = new LinkedList<Object> ();
if ( selection instanceof IStructuredSelection ) if ( selection instanceof IStructuredSelection ) {
{
Iterator<?> i = ((IStructuredSelection)selection).iterator(); Iterator<?> i = ((IStructuredSelection)selection).iterator();
while (i.hasNext()){ while (i.hasNext()){
Object o = i.next (); Object o = i.next ();