From 52f3f7b34847b274d18f3c917f081c43c6ddc8cb Mon Sep 17 00:00:00 2001 From: Brita Keller Date: Mon, 25 Nov 2019 17:46:28 +0100 Subject: [PATCH 01/11] Fixed # 18 - Fixed tree view and stream list after last tab is closed --- .../database/swt/internal/WaveformViewer.java | 6 +++ .../scviewer/database/ui/IWaveformViewer.java | 3 ++ .../e4/application/parts/DesignBrowser.java | 28 +++++++++++-- .../e4/application/parts/WaveformViewer.java | 39 ++++++++++++++++++- 4 files changed, 71 insertions(+), 5 deletions(-) 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 04d9232..57933fc 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 @@ -46,6 +46,7 @@ import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; +import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; @@ -1249,4 +1250,9 @@ public class WaveformViewer implements IWaveformViewer { } }); } + + /// probably not the way it should be done + public void addDisposeListener( DisposeListener listener ) { + waveformCanvas.addDisposeListener(listener); + } } 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 4ca4877..6575cfc 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 @@ -17,6 +17,7 @@ import java.util.List; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Control; @@ -104,4 +105,6 @@ public interface IWaveformViewer extends PropertyChangeListener, ISelectionProvi public void setBaselineTime(Long scale); public void scrollHorizontal(int percent); + + public void addDisposeListener( DisposeListener listener ); } \ No newline at end of file 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 7f14b8c..0de7795 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 @@ -49,6 +49,8 @@ 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.DisposeEvent; +import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.PaintEvent; @@ -344,6 +346,16 @@ public class DesignBrowser { thisSelectionCount=selection.toList().size(); updateButtons(); } + + /** + * reset tree viewer and tableviewer after every closed tab + */ + protected void resetTreeViewer() { + //reset tree- and tableviewer + treeViewer.setInput(null); + txTableViewer.setInput(null); + txTableViewer.setSelection(null); + } /** * Gets the status event. @@ -354,21 +366,31 @@ public class DesignBrowser { @SuppressWarnings("unchecked") @Inject @Optional public void getActiveWaveformViewerEvent(@UIEventTopic(WaveformViewer.ACTIVE_WAVEFORMVIEW) WaveformViewer waveformViewerPart) { - if(this.waveformViewerPart!=null) + if(this.waveformViewerPart!=null) { this.waveformViewerPart.storeDesignBrowerState(new DBState()); + } + if( this.waveformViewerPart == null || this.waveformViewerPart != waveformViewerPart ) { + waveformViewerPart.addDisposeListener( new DisposeListener() { + @Override + public void widgetDisposed(DisposeEvent e) { + // reset tree- and tableviewer + resetTreeViewer(); + } + } ); + } this.waveformViewerPart=waveformViewerPart; IWaveformDb database = waveformViewerPart.getDatabase(); Object input = treeViewer.getInput(); 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 + if(db==database) return; // do nothing if old and new database is the same ((List)input).get(0).removePropertyChangeListener(treeViewerPCL); } treeViewer.setInput(Arrays.asList(database.isLoaded()?new IWaveformDb[]{database}:new IWaveformDb[]{new LoadingWaveformDb()})); Object state=this.waveformViewerPart.retrieveDesignBrowerState(); if(state!=null && state instanceof DBState) ((DBState)state).apply(); - else + else txTableViewer.setInput(null); // Set up the tree viewer database.addPropertyChangeListener(treeViewerPCL); diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java index 251a9d8..ab0ea06 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java @@ -63,6 +63,8 @@ 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.events.DisposeEvent; +import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseTrackListener; import org.eclipse.swt.events.MouseWheelListener; @@ -72,7 +74,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; - +import org.eclipse.swt.widgets.TypedListener; import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITxEvent; import com.minres.scviewer.database.ITxRelation; @@ -101,7 +103,7 @@ import com.minres.scviewer.e4.application.preferences.PreferenceConstants; * The Class WaveformViewerPart. */ @SuppressWarnings("restriction") -public class WaveformViewer implements IFileChangeListener, IPreferenceChangeListener { +public class WaveformViewer implements IFileChangeListener, IPreferenceChangeListener, DisposeListener { /** The Constant ACTIVE_WAVEFORMVIEW. */ public static final String ACTIVE_WAVEFORMVIEW = "Active_Waveform_View"; //$NON-NLS-1$ @@ -149,6 +151,9 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis /** The Constant WAVE_ACTION_ID. */ public static final String WAVE_ACTION_ID = "com.minres.scviewer.ui.action.AddToWave"; //$NON-NLS-1$ + /** The number of active DisposeListeners */ + private static int disposeListenerNumber = 0; + /** The factory. */ WaveformViewerFactory factory = new WaveformViewerFactory(); @@ -178,6 +183,8 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis @Inject @Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE) IEclipsePreferences prefs; + + @Inject @Optional DesignBrowser designBrowser; /** The database. */ private IWaveformDb database; @@ -221,6 +228,8 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis */ @PostConstruct public void createComposite(MPart part, Composite parent, IWaveformDbFactory dbFactory) { + disposeListenerNumber += 1; + myPart = part; myParent = parent; database = dbFactory.getDatabase(); @@ -393,6 +402,8 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis } }); prefs.addPreferenceChangeListener(this); + + waveformPane.addDisposeListener(this); } /* (non-Javadoc) @@ -1185,4 +1196,28 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis waveformPane.update(); } + /** + * add dispose listener + * + * @param listener + */ + public void addDisposeListener (DisposeListener listener) { + waveformPane.getControl().addDisposeListener(listener); + } + + /** + * triggers included actions if widget is disposed + * + * @param e + */ + public void widgetDisposed(DisposeEvent e) { + disposeListenerNumber -= 1; + if( disposeListenerNumber == 0) { //if the last tab is closed, reset statusbar + eventBroker.post(WaveStatusBarControl.ZOOM_LEVEL, null); + eventBroker.post(WaveStatusBarControl.CURSOR_TIME, null); + eventBroker.post(WaveStatusBarControl.MARKER_TIME, null); + eventBroker.post(WaveStatusBarControl.MARKER_DIFF, null); + } + } + } \ No newline at end of file -- 2.40.1 From 7b2db095855130572667e23d39dd39ef41e876cb Mon Sep 17 00:00:00 2001 From: Brita Keller Date: Tue, 3 Dec 2019 22:19:56 +0100 Subject: [PATCH 02/11] Fixed #20 - NPE gets caught when opening a damaged file and info popup is shown --- .../scviewer/database/text/TextDbLoader.groovy | 2 ++ .../database/swt/internal/WaveformViewer.java | 1 + .../e4/application/parts/WaveformViewer.java | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) 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 c915e0e..1461b08 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 @@ -80,6 +80,7 @@ public class TextDbLoader implements IWaveformDbLoader{ .allocateStartSize(64*1024*1024) .allocateIncrement(64*1024*1024) .make() + // NPE here ---> parseInput(gzipped?new GZIPInputStream(new FileInputStream(file)):new FileInputStream(file)) calculateConcurrencyIndicees() return true @@ -87,6 +88,7 @@ public class TextDbLoader implements IWaveformDbLoader{ } catch(EOFException e) { return true; } catch(Exception e) { + System.out.println("---->>> Exception caught while loading database. StackTrace following... "); e.printStackTrace() } return false; 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 57933fc..ca5a566 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 @@ -158,6 +158,7 @@ public class WaveformViewer implements IWaveformViewer { @Override public void mouseUp(MouseEvent e) { + if(start==null) return; if((e.stateMask&SWT.MODIFIER_MASK&~SWT.SHIFT)!=0) return; //don't react on modifier if (e.button == 1 && ((e.stateMask&SWT.SHIFT)==0)) { if(Math.abs(e.x-start.x)<3 && Math.abs(e.y-start.y)<3){ diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java index ab0ea06..26d42c6 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java @@ -74,7 +74,8 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.TypedListener; +import org.eclipse.swt.widgets.MessageBox; + import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITxEvent; import com.minres.scviewer.database.ITxRelation; @@ -489,7 +490,17 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis job.addJobChangeListener(new JobChangeAdapter() { @Override public void done(IJobChangeEvent event) { - if (event.getResult().getCode() != Status.OK_STATUS.getCode()) return; + IStatus result = event.getResult(); + if( (!result.isMultiStatus() && result.getCode() != Status.OK_STATUS.getCode() ) || + (result.isMultiStatus() && result.getChildren().length > 0 && result.getChildren()[0].getCode() != Status.OK_STATUS.getCode() ) ){ + // kill editor and pop up warning for user + sync.asyncExec(() -> { + final Display display = myParent.getDisplay(); + MessageDialog.openWarning(display.getActiveShell(), "Error loading database", "Database cannot be loaded. Aborting..."); + ePartService.hidePart(myPart, true); + }); + return; + } sync.asyncExec(()->{ waveformPane.setMaxTime(database.getMaxTime()); if (state != null) -- 2.40.1 From c7c1f97b0c2a5f2da6957264a0c54a791cb8ebac Mon Sep 17 00:00:00 2001 From: Brita Keller Date: Wed, 18 Dec 2019 17:16:20 +0100 Subject: [PATCH 03/11] Fixed #21 - IllegalStateException when closing SCViewer --- .../scviewer/e4/application/parts/DesignBrowser.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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 0de7795..f2444fa 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 @@ -60,6 +60,7 @@ 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.Control; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; @@ -373,9 +374,13 @@ public class DesignBrowser { waveformViewerPart.addDisposeListener( new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { - // reset tree- and tableviewer - resetTreeViewer(); - } + Control control = treeViewer.getControl(); + // check if widget is already disposed (f.ex. because of workbench closing) + if (control == null || control.isDisposed()) { //if so: do nothing + }else { //reset tree- and tableviewer + resetTreeViewer(); + } + } } ); } this.waveformViewerPart=waveformViewerPart; -- 2.40.1 From 689d7874f4030ddd22873f295fb23d5f21cad3ff Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Thu, 5 Dec 2019 16:25:43 +0100 Subject: [PATCH 04/11] Extended data type for text database --- .../database/text/TextDbLoader.groovy | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) 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 1461b08..e2b2d42 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 @@ -28,6 +28,7 @@ import com.minres.scviewer.database.IWaveform import com.minres.scviewer.database.IWaveformDb import com.minres.scviewer.database.IWaveformDbLoader import com.minres.scviewer.database.RelationType +import com.minres.scviewer.database.DataType public class TextDbLoader implements IWaveformDbLoader{ @@ -140,7 +141,7 @@ public class TextDbLoader implements IWaveformDbLoader{ BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); long lineCnt=0; reader.eachLine { line -> - def tokens = line.split(/\s+/) + def tokens = line.split(/\s+/) as ArrayList switch(tokens[0]){ case "scv_tr_stream": case "scv_tr_generator": @@ -187,7 +188,10 @@ public class TextDbLoader implements IWaveformDbLoader{ break case "tx_record_attribute"://matcher = line =~ /^tx_record_attribute\s+(\d+)\s+"([^"]+)"\s+(\S+)\s*=\s*(.+)$/ def id = Integer.parseInt(tokens[1]) - transactionsById[id].attributes<5?tokens[5..-1].join(' '):"" + transactionsById[id].attributes< stream.getMaxConcurrency() } } -- 2.40.1 From ed665ac0326a119fde325e21fd2f0f91e5917d0b Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Mon, 13 Jan 2020 13:14:34 +0100 Subject: [PATCH 05/11] Fixed NP and updated build infrastructure and target platform --- .../META-INF/MANIFEST.MF | 5 +- com.minres.scviewer.database.test/pom.xml | 2 +- .../org.eclipse.jdt.groovy.core.prefs | 2 +- .../META-INF/MANIFEST.MF | 6 +- com.minres.scviewer.database.text/pom.xml | 11 +- .../database/text/TextDbLoader.groovy | 2 +- .../META-INF/MANIFEST.MF | 3 - com.minres.scviewer.parent/pom.xml | 104 +++++++++--------- ...rget => com.minres.scviewer.target.target} | 7 +- com.minres.scviewer.target/pom.xml | 2 +- 10 files changed, 68 insertions(+), 76 deletions(-) rename com.minres.scviewer.target/{photon.target => com.minres.scviewer.target.target} (83%) diff --git a/com.minres.scviewer.database.sqlite/META-INF/MANIFEST.MF b/com.minres.scviewer.database.sqlite/META-INF/MANIFEST.MF index 7a73230..b801309 100644 --- a/com.minres.scviewer.database.sqlite/META-INF/MANIFEST.MF +++ b/com.minres.scviewer.database.sqlite/META-INF/MANIFEST.MF @@ -5,10 +5,7 @@ Bundle-SymbolicName: com.minres.scviewer.database.sqlite Bundle-Version: 1.0.0.qualifier Bundle-Vendor: MINRES Technologies GmbH Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: com.minres.scviewer.database;bundle-version="1.0.0", - org.eclipse.equinox.util;bundle-version="1.0.500", - org.eclipse.equinox.ds;bundle-version="1.4.200", - org.eclipse.osgi.services;bundle-version="3.4.0" +Require-Bundle: com.minres.scviewer.database;bundle-version="1.0.0" Bundle-ClassPath: .,sqlite-jdbc-3.8.7.jar Service-Component: OSGI-INF/component.xml Bundle-ActivationPolicy: lazy diff --git a/com.minres.scviewer.database.test/pom.xml b/com.minres.scviewer.database.test/pom.xml index 789f91b..68f458a 100644 --- a/com.minres.scviewer.database.test/pom.xml +++ b/com.minres.scviewer.database.test/pom.xml @@ -14,7 +14,7 @@ org.eclipse.tycho tycho-surefire-plugin - 0.23.1 + ${tycho-version} diff --git a/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs b/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs index 021403d..74af1ba 100644 --- a/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs +++ b/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs @@ -1,2 +1,2 @@ eclipse.preferences.version=1 -groovy.compiler.level=26 +groovy.compiler.level=25 diff --git a/com.minres.scviewer.database.text/META-INF/MANIFEST.MF b/com.minres.scviewer.database.text/META-INF/MANIFEST.MF index 61b0865..b98eea8 100644 --- a/com.minres.scviewer.database.text/META-INF/MANIFEST.MF +++ b/com.minres.scviewer.database.text/META-INF/MANIFEST.MF @@ -2,12 +2,12 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Textual transaction database Bundle-SymbolicName: com.minres.scviewer.database.text -Bundle-Version: 2.0.0.qualifier +Bundle-Version: 2.0.1.qualifier Bundle-Vendor: MINRES Technologies GmbH Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: org.osgi.framework;version="1.3.0" -Require-Bundle: com.minres.scviewer.database;bundle-version="1.0.0", - org.codehaus.groovy;bundle-version="1.8.6", +Require-Bundle: com.minres.scviewer.database, + org.codehaus.groovy;bundle-version="2.5.8", org.eclipse.equinox.util;bundle-version="1.0.500", org.eclipse.equinox.ds;bundle-version="1.4.200", org.eclipse.osgi.services;bundle-version="3.4.0", diff --git a/com.minres.scviewer.database.text/pom.xml b/com.minres.scviewer.database.text/pom.xml index aa0c0d0..759ac27 100644 --- a/com.minres.scviewer.database.text/pom.xml +++ b/com.minres.scviewer.database.text/pom.xml @@ -2,7 +2,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.minres.scviewer.database.text - 2.0.0-SNAPSHOT + 2.0.1-SNAPSHOT com.minres.scviewer com.minres.scviewer.parent @@ -15,10 +15,13 @@ org.eclipse.tycho - tycho-compiler-plugin - 0.23.1 + maven-compiler-plugin + 3.8.0 groovy-eclipse-compiler + + + 1.7 @@ -34,8 +37,6 @@ org.codehaus.groovy groovy-eclipse-batch ${groovy-eclipse-batch-version} - - 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 e2b2d42..8fa5b9b 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 @@ -116,7 +116,7 @@ public class TextDbLoader implements IWaveformDbLoader{ } catch (IOException e) { return false; } finally { - is.close() + if(is!=null) is.close() } } diff --git a/com.minres.scviewer.database/META-INF/MANIFEST.MF b/com.minres.scviewer.database/META-INF/MANIFEST.MF index c1ec1ec..9550f8c 100644 --- a/com.minres.scviewer.database/META-INF/MANIFEST.MF +++ b/com.minres.scviewer.database/META-INF/MANIFEST.MF @@ -8,7 +8,4 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: com.minres.scviewer.database Bundle-ActivationPolicy: lazy Service-Component: OSGI-INF/component.xml,OSGI-INF/component2.xml -Require-Bundle: org.eclipse.equinox.ds;bundle-version="1.4.200", - org.eclipse.equinox.util;bundle-version="1.0.500", - org.eclipse.osgi.services;bundle-version="3.4.0" Automatic-Module-Name: com.minres.scviewer.database diff --git a/com.minres.scviewer.parent/pom.xml b/com.minres.scviewer.parent/pom.xml index 13bb8f3..f7296c1 100644 --- a/com.minres.scviewer.parent/pom.xml +++ b/com.minres.scviewer.parent/pom.xml @@ -1,4 +1,5 @@ - 4.0.0 com.minres.scviewer @@ -24,25 +25,10 @@ - 0.23.1 - ${tycho-version} - 2.8.0-01 - - 2.1.8-01 - + 1.5.0 + 3.5.0 + 2.5.8-03 - - - mars - p2 - http://download.eclipse.org/releases/photon - - - GRECLIPSE - p2 - http://dist.springsource.org/snapshot/GRECLIPSE/e4.8 - - @@ -53,11 +39,54 @@ true + + org.eclipse.tycho + tycho-source-plugin + ${tycho-version} + + + + plugin-source + + plugin-source + + + + + + + org.eclipse.tycho + tycho-p2-plugin + ${tycho-version} + + + attach-p2-metadata + package + + p2-metadata + + + + + + + org.eclipse.tycho + tycho-versions-plugin + ${tycho-version} + + org.eclipse.tycho target-platform-configuration ${tycho-version} + + + com.minres.scviewer + com.minres.scviewer.target + 2.0.0-SNAPSHOT + + linux @@ -91,7 +120,7 @@ org.eclipse.tycho.extras tycho-source-feature-plugin - ${tycho-extras-version} + ${tycho-version} @@ -111,41 +140,6 @@ - - org.eclipse.tycho - tycho-source-plugin - ${tycho-version} - - - - plugin-source - - plugin-source - - - - - - - org.eclipse.tycho - tycho-p2-plugin - ${tycho-version} - - - attached-p2-metadata - package - - p2-metadata - - - - - - - org.eclipse.tycho - tycho-versions-plugin - ${tycho-version} - \ No newline at end of file diff --git a/com.minres.scviewer.target/photon.target b/com.minres.scviewer.target/com.minres.scviewer.target.target similarity index 83% rename from com.minres.scviewer.target/photon.target rename to com.minres.scviewer.target/com.minres.scviewer.target.target index 5d6c71b..35d5d82 100644 --- a/com.minres.scviewer.target/photon.target +++ b/com.minres.scviewer.target/com.minres.scviewer.target.target @@ -1,4 +1,6 @@ - + + + @@ -11,8 +13,9 @@ - + + diff --git a/com.minres.scviewer.target/pom.xml b/com.minres.scviewer.target/pom.xml index 75a143f..459e328 100644 --- a/com.minres.scviewer.target/pom.xml +++ b/com.minres.scviewer.target/pom.xml @@ -4,7 +4,7 @@ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4.0.0 - photon + com.minres.scviewer.target eclipse-target-definition SCViewer Target Definition -- 2.40.1 From 51d9d7e25c45e99dd182b9885c6a3099f4ea41aa Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Mon, 13 Jan 2020 13:14:34 +0100 Subject: [PATCH 06/11] Fixed NP and updated build infrastructure and target platform --- com.minres.scviewer.target/neon.target | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 com.minres.scviewer.target/neon.target diff --git a/com.minres.scviewer.target/neon.target b/com.minres.scviewer.target/neon.target deleted file mode 100644 index d84fbf9..0000000 --- a/com.minres.scviewer.target/neon.target +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - -x86_64 -de_DE - - --Dosgi.requiredJavaVersion=1.7 -XX:MaxPermSize=256 -Xms40m -Xmx2G - - \ No newline at end of file -- 2.40.1 From 44ac32359f02e0fb1c1e585ecc5e13073956769f Mon Sep 17 00:00:00 2001 From: Brita Keller Date: Mon, 27 Jan 2020 20:37:53 +0100 Subject: [PATCH 07/11] Fixed #19 - Fixed sync of streamlist --- .../scviewer/e4/application/parts/DesignBrowser.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 f2444fa..b9a92dd 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 @@ -199,12 +199,16 @@ public class DesignBrowser { @Override public void selectionChanged(SelectionChangedEvent event) { ISelection selection=event.getSelection(); - if( selection instanceof IStructuredSelection) { + if( selection instanceof IStructuredSelection) { Object object= ((IStructuredSelection)selection).getFirstElement(); - if(object instanceof IHierNode&& ((IHierNode)object).getChildNodes().size()!=0){ + if(object instanceof IHierNode && ((IHierNode)object).getChildNodes().size()!=0){ txTableViewer.setInput(object); updateButtons(); } + else { //if selection is changed but empty + txTableViewer.setInput(null); + updateButtons(); + } } } }); @@ -250,8 +254,8 @@ public class DesignBrowser { @Override public void selectionChanged(SelectionChangedEvent event) { - selectionService.setSelection(event.getSelection()); - updateButtons(); + selectionService.setSelection(event.getSelection()); + updateButtons(); } }); -- 2.40.1 From 347dbf134bece92ed71304a7e61f5507f79ce783 Mon Sep 17 00:00:00 2001 From: eyck Date: Tue, 28 Jan 2020 23:23:15 +0100 Subject: [PATCH 08/11] removed javax.xml.bind dependency --- .../org.eclipse.jdt.groovy.core.prefs | 3 +- .../src/com/minres/scviewer/ui/Hex.java | 36 +++++++++++++++++++ .../scviewer/ui/TxEditorInputFactory.java | 5 +-- 3 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 com.minres.scviewer.ui/src/com/minres/scviewer/ui/Hex.java diff --git a/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs b/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs index 74af1ba..bde59a0 100644 --- a/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs +++ b/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs @@ -1,2 +1,3 @@ eclipse.preferences.version=1 -groovy.compiler.level=25 +groovy.compiler.level=26 +groovy.script.filters=**/*.dsld,y,**/*.gradle,n diff --git a/com.minres.scviewer.ui/src/com/minres/scviewer/ui/Hex.java b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/Hex.java new file mode 100644 index 0000000..c68ed72 --- /dev/null +++ b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/Hex.java @@ -0,0 +1,36 @@ +package com.minres.scviewer.ui; +public final class Hex { + public static byte[] decode(final String hex) { + if (hex.length() % 2 != 0) { + throw new IllegalArgumentException("A hex string must contain an even number of characters: " + hex); + } + + byte[] out = new byte[hex.length() / 2]; + + for (int i = 0; i < hex.length(); i += 2) { + int high = Character.digit(hex.charAt(i), 16); + int low = Character.digit(hex.charAt(i + 1), 16); + if (high == -1 || low == -1) { + throw new IllegalArgumentException("A hex string can only contain the characters 0-9, A-F, a-f: " + hex); + } + + out[i / 2] = (byte) (high * 16 + low); + } + + return out; + } + + private static final char[] UPPER_HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', }; + + public static String encode(final byte[] bytes) { + StringBuilder stringBuilder = new StringBuilder(bytes.length * 2); + for (byte cur : bytes) { + stringBuilder.append(UPPER_HEX_DIGITS[(cur >> 4) & 0xF]); + stringBuilder.append(UPPER_HEX_DIGITS[(cur & 0xF)]); + } + return stringBuilder.toString(); + } + + private Hex() { + } +} \ No newline at end of file diff --git a/com.minres.scviewer.ui/src/com/minres/scviewer/ui/TxEditorInputFactory.java b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/TxEditorInputFactory.java index fae3c0c..cb58c0b 100644 --- a/com.minres.scviewer.ui/src/com/minres/scviewer/ui/TxEditorInputFactory.java +++ b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/TxEditorInputFactory.java @@ -71,7 +71,7 @@ public class TxEditorInputFactory implements IElementFactory { String listData = memento.getString(TAG_STREAMLIST); if (listData != null) { try { - ByteArrayInputStream bais = new ByteArrayInputStream(javax.xml.bind.DatatypeConverter.parseHexBinary(listData)); + ByteArrayInputStream bais = new ByteArrayInputStream(Hex.decode(listData)); ObjectInputStream ois = new ObjectInputStream(bais); Object obj = ois.readObject(); if(obj instanceof List) @@ -107,8 +107,9 @@ public class TxEditorInputFactory implements IElementFactory { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(input.getStreamNames()); - memento.putString(TAG_STREAMLIST, javax.xml.bind.DatatypeConverter.printHexBinary(baos.toByteArray())); + memento.putString(TAG_STREAMLIST, Hex.encode(baos.toByteArray())); } catch (IOException e) { } } + } -- 2.40.1 From ca02c92a185a131cf702a1662cac729cd6c2832c Mon Sep 17 00:00:00 2001 From: Brita Keller Date: Mon, 3 Feb 2020 21:26:56 +0100 Subject: [PATCH 09/11] Fixed #23 - Fix sync of properties --- .../scviewer/e4/application/parts/WaveformViewer.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java index 26d42c6..27bd372 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java @@ -249,6 +249,10 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis }); waveformPane = factory.createPanel(parent); waveformPane.setMaxTime(0); + + //set selection to empty selection when opening a new waveformPane + selectionService.setSelection(new StructuredSelection()); + waveformPane.addPropertyChangeListener(IWaveformViewer.CURSOR_PROPERTY, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { @@ -268,11 +272,13 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(cursor - time)); } }); + waveformPane.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { - if (event.getSelection() instanceof IStructuredSelection) + if (event.getSelection() instanceof IStructuredSelection) { selectionService.setSelection(event.getSelection()); + } } }); waveformPane.getWaveformControl().addMouseTrackListener(new MouseTrackListener() { -- 2.40.1 From 3d20b6961ebf2ecec0daf29ab8ef6b6d6f1de8cd Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Mon, 10 Feb 2020 02:25:40 +0100 Subject: [PATCH 10/11] Updated groovy compiler level --- .../.settings/org.eclipse.jdt.groovy.core.prefs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs b/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs index bde59a0..74af1ba 100644 --- a/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs +++ b/com.minres.scviewer.database.text/.settings/org.eclipse.jdt.groovy.core.prefs @@ -1,3 +1,2 @@ eclipse.preferences.version=1 -groovy.compiler.level=26 -groovy.script.filters=**/*.dsld,y,**/*.gradle,n +groovy.compiler.level=25 -- 2.40.1 From a0f0b550450b92920f99792ea64850abdb21fdb8 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Mon, 10 Feb 2020 06:46:55 +0100 Subject: [PATCH 11/11] Updated application bundle version number --- com.minres.scviewer.e4.application/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF b/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF index 7c8389f..8407a07 100644 --- a/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF +++ b/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Bundle-Name Bundle-SymbolicName: com.minres.scviewer.e4.application;singleton:=true -Bundle-Version: 2.1.1.qualifier +Bundle-Version: 2.1.2.qualifier Bundle-Vendor: %Bundle-Vendor Require-Bundle: javax.inject;bundle-version="1.0.0", org.eclipse.core.runtime;bundle-version="3.11.1", -- 2.40.1