From 7d3c37e989403b5bc6d52eab69171b726ff6a2f0 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Tue, 3 Nov 2015 22:29:42 +0100 Subject: [PATCH] Restructured plugins --- .../swing2swt.jar | Bin 33195 -> 0 bytes .../.classpath | 1 - .../.gitignore | 0 .../.project | 2 +- .../org.eclipse.core.resources.prefs | 0 .../.settings/org.eclipse.jdt.core.prefs | 0 .../.settings/org.eclipse.m2e.core.prefs | 0 .../.settings/org.eclipse.pde.core.prefs | 0 .../META-INF/MANIFEST.MF | 5 +- .../build.properties | 3 +- com.minres.scviewer.database.ui.swt/pom.xml | 11 + .../scviewer/database/swt/TxDisplay.java | 245 ++++++++++++------ .../database/swt/internal/CursorPainter.java | 0 .../database/swt/internal/IPainter.java | 0 .../swt/internal/IWaveformPainter.java | 0 .../database/swt/internal/ObservableList.java | 0 .../database/swt/internal/RulerPainter.java | 0 .../database/swt/internal/SignalPainter.java | 0 .../database/swt/internal/StreamPainter.java | 0 .../database/swt/internal/TrackPainter.java | 12 +- .../database/swt/internal/WaveformCanvas.java | 2 +- .../eclipse/wb/swt/SWTResourceManager.java | 0 com.minres.scviewer.database.ui/.classpath | 7 + com.minres.scviewer.database.ui/.gitignore | 2 + com.minres.scviewer.database.ui/.project | 28 ++ .../.settings/org.eclipse.jdt.core.prefs | 7 + .../.settings/org.eclipse.pde.core.prefs | 3 + .../META-INF/MANIFEST.MF | 10 + .../build.properties | 4 + .../pom.xml | 5 +- .../scviewer/database/ui}/GotoDirection.java | 2 +- .../scviewer/database/ui/IWaveformPanel.java | 75 ++++++ .../Application.e4xmi | 5 +- .../META-INF/MANIFEST.MF | 5 +- .../scviewer/e4/application/E4LifeCycle.java | 5 +- .../application/handlers/NavigateEvent.java | 2 +- .../application/handlers/NavigateTrans.java | 2 +- .../e4/application/handlers/OpenHandler.java | 2 +- .../application/parts/WaveformViewerPart.java | 91 +++---- .../SCViewer.launch | 2 +- .../scviewer.product | 3 +- com.minres.scviewer.feature/feature.xml | 12 +- com.minres.scviewer.parent/pom.xml | 65 ++++- com.minres.scviewer.ui/META-INF/MANIFEST.MF | 3 +- .../com/minres/scviewer/ui/TxEditorPart.java | 5 +- .../minres/scviewer/ui/handler/GotoNext.java | 2 +- .../minres/scviewer/ui/handler/GotoPrev.java | 2 +- com.minres.scviewer.updateSite/pom.xml | 4 +- 48 files changed, 472 insertions(+), 162 deletions(-) delete mode 100644 com.minres.scviewer.database.swt/swing2swt.jar rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/.classpath (85%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/.gitignore (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/.project (94%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/.settings/org.eclipse.core.resources.prefs (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/.settings/org.eclipse.jdt.core.prefs (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/.settings/org.eclipse.m2e.core.prefs (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/.settings/org.eclipse.pde.core.prefs (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/META-INF/MANIFEST.MF (78%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/build.properties (92%) create mode 100644 com.minres.scviewer.database.ui.swt/pom.xml rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/TxDisplay.java (83%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/internal/CursorPainter.java (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/internal/IPainter.java (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/internal/IWaveformPainter.java (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/internal/ObservableList.java (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/internal/RulerPainter.java (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/internal/SignalPainter.java (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/internal/StreamPainter.java (100%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/internal/TrackPainter.java (78%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java (99%) rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui.swt}/src/org/eclipse/wb/swt/SWTResourceManager.java (100%) create mode 100644 com.minres.scviewer.database.ui/.classpath create mode 100644 com.minres.scviewer.database.ui/.gitignore create mode 100644 com.minres.scviewer.database.ui/.project create mode 100644 com.minres.scviewer.database.ui/.settings/org.eclipse.jdt.core.prefs create mode 100644 com.minres.scviewer.database.ui/.settings/org.eclipse.pde.core.prefs create mode 100644 com.minres.scviewer.database.ui/META-INF/MANIFEST.MF create mode 100644 com.minres.scviewer.database.ui/build.properties rename {com.minres.scviewer.database.swt => com.minres.scviewer.database.ui}/pom.xml (82%) rename {com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt => com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui}/GotoDirection.java (87%) create mode 100644 com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/IWaveformPanel.java diff --git a/com.minres.scviewer.database.swt/swing2swt.jar b/com.minres.scviewer.database.swt/swing2swt.jar deleted file mode 100644 index ee261b5df113af861dffbd10f1fabe79fb68fabf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33195 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 diff --git a/com.minres.scviewer.database.swt/.classpath b/com.minres.scviewer.database.ui.swt/.classpath similarity index 85% rename from com.minres.scviewer.database.swt/.classpath rename to com.minres.scviewer.database.ui.swt/.classpath index fffb3a2..46cec6e 100644 --- a/com.minres.scviewer.database.swt/.classpath +++ b/com.minres.scviewer.database.ui.swt/.classpath @@ -3,6 +3,5 @@ - diff --git a/com.minres.scviewer.database.swt/.gitignore b/com.minres.scviewer.database.ui.swt/.gitignore similarity index 100% rename from com.minres.scviewer.database.swt/.gitignore rename to com.minres.scviewer.database.ui.swt/.gitignore diff --git a/com.minres.scviewer.database.swt/.project b/com.minres.scviewer.database.ui.swt/.project similarity index 94% rename from com.minres.scviewer.database.swt/.project rename to com.minres.scviewer.database.ui.swt/.project index e661377..5774607 100644 --- a/com.minres.scviewer.database.swt/.project +++ b/com.minres.scviewer.database.ui.swt/.project @@ -1,6 +1,6 @@ - com.minres.scviewer.database.swt + com.minres.scviewer.database.ui.swt diff --git a/com.minres.scviewer.database.swt/.settings/org.eclipse.core.resources.prefs b/com.minres.scviewer.database.ui.swt/.settings/org.eclipse.core.resources.prefs similarity index 100% rename from com.minres.scviewer.database.swt/.settings/org.eclipse.core.resources.prefs rename to com.minres.scviewer.database.ui.swt/.settings/org.eclipse.core.resources.prefs diff --git a/com.minres.scviewer.database.swt/.settings/org.eclipse.jdt.core.prefs b/com.minres.scviewer.database.ui.swt/.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from com.minres.scviewer.database.swt/.settings/org.eclipse.jdt.core.prefs rename to com.minres.scviewer.database.ui.swt/.settings/org.eclipse.jdt.core.prefs diff --git a/com.minres.scviewer.database.swt/.settings/org.eclipse.m2e.core.prefs b/com.minres.scviewer.database.ui.swt/.settings/org.eclipse.m2e.core.prefs similarity index 100% rename from com.minres.scviewer.database.swt/.settings/org.eclipse.m2e.core.prefs rename to com.minres.scviewer.database.ui.swt/.settings/org.eclipse.m2e.core.prefs diff --git a/com.minres.scviewer.database.swt/.settings/org.eclipse.pde.core.prefs b/com.minres.scviewer.database.ui.swt/.settings/org.eclipse.pde.core.prefs similarity index 100% rename from com.minres.scviewer.database.swt/.settings/org.eclipse.pde.core.prefs rename to com.minres.scviewer.database.ui.swt/.settings/org.eclipse.pde.core.prefs diff --git a/com.minres.scviewer.database.swt/META-INF/MANIFEST.MF b/com.minres.scviewer.database.ui.swt/META-INF/MANIFEST.MF similarity index 78% rename from com.minres.scviewer.database.swt/META-INF/MANIFEST.MF rename to com.minres.scviewer.database.ui.swt/META-INF/MANIFEST.MF index 99006e9..ac7633b 100644 --- a/com.minres.scviewer.database.swt/META-INF/MANIFEST.MF +++ b/com.minres.scviewer.database.ui.swt/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: SWT widget -Bundle-SymbolicName: com.minres.scviewer.database.swt +Bundle-SymbolicName: com.minres.scviewer.database.ui.swt Bundle-Version: 1.0.0.qualifier Bundle-Vendor: MINRES Technologies GmbH Bundle-RequiredExecutionEnvironment: JavaSE-1.7 @@ -9,7 +9,8 @@ Require-Bundle: org.eclipse.swt;bundle-version="3.103.1", com.minres.scviewer.database;bundle-version="1.0.0", com.google.guava;bundle-version="15.0.0", org.eclipse.jface, - org.eclipse.equinox.registry + org.eclipse.equinox.registry, + com.minres.scviewer.database.ui Export-Package: com.minres.scviewer.database.swt Bundle-ClassPath: ., swing2swt.jar diff --git a/com.minres.scviewer.database.swt/build.properties b/com.minres.scviewer.database.ui.swt/build.properties similarity index 92% rename from com.minres.scviewer.database.swt/build.properties rename to com.minres.scviewer.database.ui.swt/build.properties index 8a5bcac..4e2b05a 100644 --- a/com.minres.scviewer.database.swt/build.properties +++ b/com.minres.scviewer.database.ui.swt/build.properties @@ -9,7 +9,6 @@ # MINRES Technologies GmbH - initial API and implementation ############################################################################### bin.includes = META-INF/,\ - .,\ - swing2swt.jar + . source.. = src/ jars.compile.order = . diff --git a/com.minres.scviewer.database.ui.swt/pom.xml b/com.minres.scviewer.database.ui.swt/pom.xml new file mode 100644 index 0000000..52701bd --- /dev/null +++ b/com.minres.scviewer.database.ui.swt/pom.xml @@ -0,0 +1,11 @@ + + 4.0.0 + com.minres.scviewer.database.ui.swt + eclipse-plugin + + com.minres.scviewer + com.minres.scviewer.parent + 1.0.0-SNAPSHOT + ../com.minres.scviewer.parent + + \ No newline at end of file diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/TxDisplay.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/TxDisplay.java similarity index 83% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/TxDisplay.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/TxDisplay.java index 202c9e3..5e85e4e 100644 --- a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/TxDisplay.java +++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/TxDisplay.java @@ -25,7 +25,6 @@ import org.eclipse.core.runtime.ListenerList; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; @@ -84,19 +83,15 @@ import com.minres.scviewer.database.swt.internal.SignalPainter; import com.minres.scviewer.database.swt.internal.StreamPainter; import com.minres.scviewer.database.swt.internal.TrackPainter; import com.minres.scviewer.database.swt.internal.WaveformCanvas; +import com.minres.scviewer.database.ui.GotoDirection; +import com.minres.scviewer.database.ui.IWaveformPanel; -import swing2swt.layout.BorderLayout; - -public class TxDisplay implements PropertyChangeListener, ISelectionProvider { +public class TxDisplay implements IWaveformPanel { private ListenerList selectionChangedListeners = new ListenerList(); private PropertyChangeSupport pcs; - public static final String CURSOR_PROPERTY = "cursor_time"; - - public static final String MARKER_PROPERTY = "marker_time"; - private static final String SELECTION = "selection"; private ITx currentTxSelection; @@ -111,7 +106,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { private Canvas valueList; - WaveformCanvas waveformList; + WaveformCanvas waveformCanvas; private Composite top; @@ -121,8 +116,6 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { int selectedMarker = 0; - private Composite trackPane; - private int trackVerticalHeight; private TreeMap> trackVerticalOffset; @@ -154,9 +147,9 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { public void mouseDown(MouseEvent e) { start=new Point(e.x, e.y); if (e.button == 1) { - initialSelected = waveformList.getClicked(start); + initialSelected = waveformCanvas.getClicked(start); } else if (e.button == 3) { - List hitted = waveformList.getClicked(start); + List hitted = waveformCanvas.getClicked(start); for(Object entry:hitted){ if(entry instanceof IWaveform){ setSelection(new StructuredSelection(entry)); @@ -182,7 +175,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { e.widget.getDisplay().asyncExec(new Runnable() { @Override public void run() { - waveformList.redraw(); + waveformCanvas.redraw(); updateValueList(); } }); @@ -192,7 +185,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { e.widget.getDisplay().asyncExec(new Runnable() { @Override public void run() { - waveformList.redraw(); + waveformCanvas.redraw(); updateValueList(); } }); @@ -200,9 +193,9 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { } protected long snapOffsetToEvent(MouseEvent e) { - long time= waveformList.getTimeForOffset(e.x); - long scaling=5*waveformList.getScaleFactor(); - for(Object o:waveformList.getClicked(start)){ + long time= waveformCanvas.getTimeForOffset(e.x); + long scaling=5*waveformCanvas.getScaleFactor(); + for(Object o:waveformCanvas.getClicked(start)){ Entry floorEntry=null, ceilEntry=null; if(o instanceof ISignal){ NavigableMap map = ((ISignal)o).getEvents(); @@ -256,11 +249,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { Composite composite = new Composite(topSash, SWT.NONE); composite.setLayout(new FillLayout(SWT.HORIZONTAL)); - trackPane = new Composite(topSash, SWT.NONE); - trackPane.setLayout(new BorderLayout(0, 0)); - - waveformList = new WaveformCanvas(trackPane, SWT.NONE); - waveformList.setLayoutData(BorderLayout.CENTER); + waveformCanvas = new WaveformCanvas(topSash, SWT.NONE); SashForm leftSash = new SashForm(composite, SWT.SMOOTH); leftSash.setBackground(leftSash.getDisplay().getSystemColor(SWT.COLOR_GRAY)); @@ -330,39 +319,39 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { valueList.addMouseListener(nameValueMouseListener); valueListScrolled.setContent(valueList); - waveformList.setStreams(streams); + waveformCanvas.setStreams(streams); // order is important: it is bottom to top - waveformList.addPainter(new TrackPainter(waveformList)); - waveformList.addPainter(new RulerPainter( - waveformList, waveformList.getDisplay().getSystemColor(SWT.COLOR_BLACK), waveformList.getDisplay().getSystemColor(SWT.COLOR_WHITE))); - CursorPainter cp = new CursorPainter(waveformList, waveformList.getScaleFactor() * 10, cursorPainters.size()-1); - waveformList.addPainter(cp); + waveformCanvas.addPainter(new TrackPainter(waveformCanvas)); + waveformCanvas.addPainter(new RulerPainter( + waveformCanvas, waveformCanvas.getDisplay().getSystemColor(SWT.COLOR_BLACK), waveformCanvas.getDisplay().getSystemColor(SWT.COLOR_WHITE))); + CursorPainter cp = new CursorPainter(waveformCanvas, waveformCanvas.getScaleFactor() * 10, cursorPainters.size()-1); + waveformCanvas.addPainter(cp); cursorPainters.add(cp); - CursorPainter marker = new CursorPainter(waveformList, waveformList.getScaleFactor() * 100, cursorPainters.size()-1); - waveformList.addPainter(marker); + CursorPainter marker = new CursorPainter(waveformCanvas, waveformCanvas.getScaleFactor() * 100, cursorPainters.size()-1); + waveformCanvas.addPainter(marker); cursorPainters.add(marker); - waveformList.setMaxTime(1); - waveformList.addMouseListener(waveformMouseListener); + waveformCanvas.setMaxTime(1); + waveformCanvas.addMouseListener(waveformMouseListener); nameListScrolled.getVerticalBar().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { int y = ((ScrollBar) e.widget).getSelection(); Point v = valueListScrolled.getOrigin(); valueListScrolled.setOrigin(v.x, y); - Point t = waveformList.getOrigin(); - waveformList.setOrigin(t.x, -y); + Point t = waveformCanvas.getOrigin(); + waveformCanvas.setOrigin(t.x, -y); } }); valueListScrolled.getVerticalBar().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { int y = ((ScrollBar) e.widget).getSelection(); nameListScrolled.setOrigin(nameListScrolled.getOrigin().x, y); - waveformList.setOrigin(waveformList.getOrigin().x, -y); + waveformCanvas.setOrigin(waveformCanvas.getOrigin().x, -y); } }); - waveformList.addSelectionListener(new SelectionAdapter() { + waveformCanvas.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { - int y = waveformList.getVerticalBar().getSelection(); + int y = waveformCanvas.getVerticalBar().getSelection(); nameListScrolled.setOrigin(nameListScrolled.getOrigin().x, y); valueListScrolled.setOrigin(valueListScrolled.getOrigin().x, y); } @@ -374,8 +363,8 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { createStreamDragSource(valueList); createStreamDropTarget(nameList); createStreamDropTarget(valueList); - createWaveformDragSource(waveformList); - createWaveformDropTarget(waveformList); + createWaveformDragSource(waveformCanvas); + createWaveformDropTarget(waveformCanvas); } private Composite createTextPane(SashForm leftSash, String text) { @@ -389,7 +378,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { CLabel nameLabel = new CLabel(namePane, SWT.NONE); GridData gd_nameLabel = new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1); - gd_nameLabel.heightHint = waveformList.getRulerHeight() - 2; + gd_nameLabel.heightHint = waveformCanvas.getRulerHeight() - 2; nameLabel.setLayoutData(gd_nameLabel); nameLabel.setText(text); @@ -417,24 +406,24 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { IWaveformPainter painter = null; trackVerticalOffset.clear(); actualValues.clear(); - waveformList.clearAllWavefromPainter(); + waveformCanvas.clearAllWavefromPainter(); boolean even = true; boolean clearSelection = true; - TextLayout tl = new TextLayout(waveformList.getDisplay()); + TextLayout tl = new TextLayout(waveformCanvas.getDisplay()); tl.setFont(nameFontB); for (IWaveform waveform : streams) { - int height = waveformList.getTrackHeight(); + int height = waveformCanvas.getTrackHeight(); clearSelection &= (waveform != currentWaveformSelection); if (waveform instanceof ITxStream) { ITxStream stream = (ITxStream) waveform; height *= stream.getMaxConcurrency(); - painter = new StreamPainter(waveformList, even, height, (ITxStream) waveform); + painter = new StreamPainter(waveformCanvas, even, height, (ITxStream) waveform); actualValues.put(stream, ""); } else if (waveform instanceof ISignal) { - painter = new SignalPainter(waveformList, even, height, (ISignal) waveform); + painter = new SignalPainter(waveformCanvas, even, height, (ISignal) waveform); actualValues.put(waveform, "---"); } - waveformList.addWavefromPainter(trackVerticalHeight, painter); + waveformCanvas.addWavefromPainter(trackVerticalHeight, painter); trackVerticalOffset.put(trackVerticalHeight, waveform); tl.setText(waveform.getFullName()); nameMaxWidth = Math.max(nameMaxWidth, tl.getBounds().width); @@ -447,11 +436,11 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { valueListScrolled.setMinSize(calculateValueWidth(), trackVerticalHeight); nameList.redraw(); updateValueList(); - waveformList.redraw(); - top.layout(new Control[] { valueList, nameList, waveformList }); + waveformCanvas.redraw(); + top.layout(new Control[] { valueList, nameList, waveformCanvas }); if (trackVerticalOffset.isEmpty() || previousHeight > trackVerticalOffset.lastKey()) { - Point o = waveformList.getOrigin(); - waveformList.setOrigin(o.x, o.y - (previousHeight - trackVerticalOffset.lastKey())); + Point o = waveformCanvas.getOrigin(); + waveformCanvas.setOrigin(o.x, o.y - (previousHeight - trackVerticalOffset.lastKey())); } if(clearSelection) setSelection(new StructuredSelection()); /* System.out.println("updateTracklist() state:"); @@ -461,7 +450,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { */ } private int calculateValueWidth() { - TextLayout tl = new TextLayout(waveformList.getDisplay()); + TextLayout tl = new TextLayout(waveformCanvas.getDisplay()); tl.setFont(nameFontB); int valueMaxWidth = 0; for (String v : actualValues.values()) { @@ -518,32 +507,57 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { return true; } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) + */ @Override public void addSelectionChangedListener(ISelectionChangedListener listener) { selectionChangedListeners.add(listener); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#removeSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) + */ @Override public void removeSelectionChangedListener(ISelectionChangedListener listener) { selectionChangedListeners.remove(listener); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getControl() + */ + @Override public Control getControl() { return top; } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getNameControl() + */ + @Override public Control getNameControl() { return nameList; } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getValueControl() + */ + @Override public Control getValueControl() { return valueList; } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getWaveformControl() + */ + @Override public Control getWaveformControl() { - return waveformList; + return waveformCanvas; } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getSelection() + */ @Override public ISelection getSelection() { if (currentTxSelection != null) @@ -554,11 +568,18 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { return new StructuredSelection(); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#setSelection(org.eclipse.jface.viewers.ISelection) + */ @Override public void setSelection(ISelection selection) { setSelection(selection, false); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#setSelection(org.eclipse.jface.viewers.ISelection, boolean) + */ + @Override @SuppressWarnings("unchecked") public void setSelection(ISelection selection, boolean addIfNeeded) { boolean selectionChanged = false; @@ -595,7 +616,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { currentWaveformSelection = null; } if (selectionChanged) { - waveformList.setSelected(currentTxSelection, currentWaveformSelection); + waveformCanvas.setSelected(currentTxSelection, currentWaveformSelection); nameList.setData(SELECTION, currentWaveformSelection); valueList.redraw(); nameList.redraw(); @@ -606,6 +627,10 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { } } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#moveSelection(com.minres.scviewer.database.swt.GotoDirection) + */ + @Override @SuppressWarnings("unchecked") public void moveSelection(GotoDirection direction) { if (currentWaveformSelection instanceof ITxStream) { @@ -669,6 +694,10 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { } } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#moveCursor(com.minres.scviewer.database.swt.GotoDirection) + */ + @Override public void moveCursor(GotoDirection direction) { long time = getCursorTime(); NavigableMap map=null; @@ -682,17 +711,25 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { if(entry!=null) { time=entry.getKey(); setCursorTime(time); - waveformList.reveal(time); - waveformList.redraw(); + waveformCanvas.reveal(time); + waveformCanvas.redraw(); } } } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getStreamList() + */ + @Override public List> getStreamList() { return streams; } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#moveSelected(int) + */ + @Override public void moveSelected(int i) { if(currentWaveformSelection!=null){ ITx selectedTx=currentTxSelection; @@ -719,7 +756,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { if (firstKey == null) firstKey = trackVerticalOffset.firstKey(); Integer lastKey = trackVerticalOffset.floorKey(rect.y + rect.height); - Rectangle subArea = new Rectangle(rect.x, 0, rect.width, waveformList.getTrackHeight()); + Rectangle subArea = new Rectangle(rect.x, 0, rect.width, waveformCanvas.getTrackHeight()); if (lastKey == firstKey) { IWaveform w = trackVerticalOffset.get(firstKey); if (w instanceof ITxStream) @@ -729,7 +766,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { for (Entry> entry : trackVerticalOffset.subMap(firstKey, true, lastKey, true) .entrySet()) { IWaveform w = entry.getValue(); - subArea.height = waveformList.getTrackHeight(); + subArea.height = waveformCanvas.getTrackHeight(); if (w instanceof ITxStream) subArea.height *= ((ITxStream) w).getMaxConcurrency(); drawTextFormat(gc, subArea, entry.getKey(), w.getFullName(), w.equals(wave)); @@ -746,7 +783,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { if (firstKey == null) firstKey = trackVerticalOffset.firstKey(); Integer lastKey = trackVerticalOffset.floorKey(rect.y + rect.height); - Rectangle subArea = new Rectangle(rect.x, 0, rect.width, waveformList.getTrackHeight()); + Rectangle subArea = new Rectangle(rect.x, 0, rect.width, waveformCanvas.getTrackHeight()); if (lastKey == firstKey) { IWaveform w = trackVerticalOffset.get(firstKey); if (w instanceof ITxStream) @@ -756,7 +793,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { for (Entry> entry : trackVerticalOffset.subMap(firstKey, true, lastKey, true) .entrySet()) { IWaveform w = entry.getValue(); - subArea.height = waveformList.getTrackHeight(); + subArea.height = waveformCanvas.getTrackHeight(); if (w instanceof ITxStream) subArea.height *= ((ITxStream) w).getMaxConcurrency(); drawValue(gc, subArea, entry.getKey(), actualValues.get(w), w.equals(wave)); @@ -767,10 +804,10 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { protected void drawValue(GC gc, Rectangle subArea, Integer yOffset, String value, boolean highlite) { int beginIndex=0; - for(int offset=0; offsetindex+1){ final Long oldVal= cursorPainters.get(1+index).getTime(); @@ -821,14 +882,26 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { } } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getCursorTime() + */ + @Override public long getCursorTime(){ return cursorPainters.get(0).getTime(); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getActMarkerTime() + */ + @Override public long getActMarkerTime(){ return getMarkerTime(selectedMarker); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getMarkerTime(int) + */ + @Override public long getMarkerTime(int index){ return cursorPainters.get(index+1).getTime(); } @@ -895,7 +968,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { public void dropAccept(DropTargetEvent event) { Point offset = canvas.toControl(event.x, event.y); - if (event.detail != DND.DROP_MOVE || offset.y > trackVerticalOffset.lastKey() + waveformList.getTrackHeight()) { + if (event.detail != DND.DROP_MOVE || offset.y > trackVerticalOffset.lastKey() + waveformCanvas.getTrackHeight()) { event.detail = DND.DROP_NONE; } } @@ -910,7 +983,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { public void dragStart(DragSourceEvent event) { System.out.println("dragStart"); event.doit = false; - List clicked = waveformList.getClicked(new Point(event.x, event.y)); + List clicked = waveformCanvas.getClicked(new Point(event.x, event.y)); for(Object o:clicked){ if(o instanceof CursorPainter){ LocalSelectionTransfer.getTransfer().setSelection(new StructuredSelection(o)); @@ -923,7 +996,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { public void dragSetData(DragSourceEvent event) { if (LocalSelectionTransfer.getTransfer().isSupportedType(event.dataType)) { - event.data=waveformList.getClicked(new Point(event.x, event.y)); + event.data=waveformCanvas.getClicked(new Point(event.x, event.y)); } } }); @@ -948,7 +1021,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { public void dropAccept(DropTargetEvent event) { Point offset = canvas.toControl(event.x, event.y); - if (event.detail != DND.DROP_MOVE || offset.y > trackVerticalOffset.lastKey() + waveformList.getTrackHeight()) { + if (event.detail != DND.DROP_MOVE || offset.y > trackVerticalOffset.lastKey() + waveformCanvas.getTrackHeight()) { event.detail = DND.DROP_NONE; } } @@ -963,7 +1036,7 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { protected void updateWaveform(final Canvas canvas, DropTargetEvent event, CursorPainter painter) { Point dropPoint = canvas.toControl(event.x, event.y); - long time = waveformList.getTimeForOffset(dropPoint.x); + long time = waveformCanvas.getTimeForOffset(dropPoint.x); final Long oldVal= painter.getTime(); painter.setTime(time); if(painter.id<0){ @@ -986,10 +1059,18 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#addPropertyChangeListener(java.beans.PropertyChangeListener) + */ + @Override public void addPropertyChangeListener(PropertyChangeListener listener) { this.pcs.addPropertyChangeListener(listener); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener) + */ + @Override public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { this.pcs.addPropertyChangeListener(propertyName, listener); } @@ -1002,10 +1083,18 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { return this.pcs.getPropertyChangeListeners(propertyName); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#removePropertyChangeListener(java.beans.PropertyChangeListener) + */ + @Override public void removePropertyChangeListener(PropertyChangeListener listener) { this.pcs.removePropertyChangeListener(listener); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#removePropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener) + */ + @Override public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { this.pcs.removePropertyChangeListener(propertyName, listener); } @@ -1014,12 +1103,20 @@ public class TxDisplay implements PropertyChangeListener, ISelectionProvider { return this.pcs.hasListeners(propertyName); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getScaledTime(long) + */ + @Override public String getScaledTime(long time) { StringBuilder sb = new StringBuilder(); Double dTime=new Double(time); - return sb.append(dTime/waveformList.getScaleFactorPow10()).append(waveformList.getUnitStr()).toString(); + return sb.append(dTime/waveformCanvas.getScaleFactorPow10()).append(waveformCanvas.getUnitStr()).toString(); } + /* (non-Javadoc) + * @see com.minres.scviewer.database.swt.IWaveformPanel#getZoomLevels() + */ + @Override public String[] getZoomLevels(){ String[] res = new String[WaveformCanvas.unitMultiplier.length*WaveformCanvas.unitString.length]; int index=0; diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java similarity index 100% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/IPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IPainter.java similarity index 100% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/IPainter.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IPainter.java diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/IWaveformPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IWaveformPainter.java similarity index 100% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/IWaveformPainter.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IWaveformPainter.java diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/ObservableList.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ObservableList.java similarity index 100% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/ObservableList.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ObservableList.java diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/RulerPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/RulerPainter.java similarity index 100% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/RulerPainter.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/RulerPainter.java diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/SignalPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/SignalPainter.java similarity index 100% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/SignalPainter.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/SignalPainter.java diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java similarity index 100% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java similarity index 78% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java index a02020c..728549c 100644 --- a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java +++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java @@ -11,6 +11,7 @@ package com.minres.scviewer.database.swt.internal; import java.util.Map.Entry; +import java.util.TreeMap; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.GC; @@ -35,18 +36,19 @@ public class TrackPainter implements IPainter { gc.setBackground(this.waveCanvas.colors[WaveformCanvas.Colors.TRACK_BG_EVEN.ordinal()]); gc.setFillRule(SWT.FILL_EVEN_ODD); gc.fillRectangle(area); + TreeMap offsets = this.waveCanvas.trackVerticalOffset; if(this.waveCanvas.streams.size()>0){ - Integer firstKey=this.waveCanvas.trackVerticalOffset.floorKey(area.y); - if(firstKey==null) firstKey=this.waveCanvas.trackVerticalOffset.firstKey(); - Integer lastKey = this.waveCanvas.trackVerticalOffset.floorKey(area.y+area.height); + Integer firstKey=offsets.floorKey(area.y); + if(firstKey==null) firstKey=offsets.firstKey(); + Integer lastKey = offsets.floorKey(area.y+area.height); Rectangle subArea = new Rectangle(area.x, 0, area.width, 0); if(lastKey==firstKey){ subArea.y=firstKey; - IWaveformPainter p = this.waveCanvas.trackVerticalOffset.get(firstKey); + IWaveformPainter p = offsets.get(firstKey); subArea.height=p.getMinHeight(); p.paintArea(gc, subArea); }else{ - for(Entry entry : this.waveCanvas.trackVerticalOffset.subMap(firstKey, true, lastKey, true).entrySet()){ + for(Entry entry : offsets.subMap(firstKey, true, lastKey, true).entrySet()){ subArea.y=entry.getKey(); subArea.height=entry.getValue().getMinHeight(); entry.getValue().paintArea(gc, subArea); diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java similarity index 99% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java rename to com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java index 810543d..04ddebd 100644 --- a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java +++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java @@ -400,7 +400,7 @@ public class WaveformCanvas extends Canvas { int top = entry.getKey() + trackHeight * tx.getConcurrencyIndex(); int bottom = top + trackHeight; if (top < -origin.y) { - setOrigin(origin.x, -top); + setOrigin(origin.x, -(top-trackHeight)); } else if (bottom > (size.y - origin.y)) { setOrigin(origin.x, size.y - bottom); } diff --git a/com.minres.scviewer.database.swt/src/org/eclipse/wb/swt/SWTResourceManager.java b/com.minres.scviewer.database.ui.swt/src/org/eclipse/wb/swt/SWTResourceManager.java similarity index 100% rename from com.minres.scviewer.database.swt/src/org/eclipse/wb/swt/SWTResourceManager.java rename to com.minres.scviewer.database.ui.swt/src/org/eclipse/wb/swt/SWTResourceManager.java diff --git a/com.minres.scviewer.database.ui/.classpath b/com.minres.scviewer.database.ui/.classpath new file mode 100644 index 0000000..098194c --- /dev/null +++ b/com.minres.scviewer.database.ui/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/com.minres.scviewer.database.ui/.gitignore b/com.minres.scviewer.database.ui/.gitignore new file mode 100644 index 0000000..09e3bc9 --- /dev/null +++ b/com.minres.scviewer.database.ui/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/target/ diff --git a/com.minres.scviewer.database.ui/.project b/com.minres.scviewer.database.ui/.project new file mode 100644 index 0000000..4133603 --- /dev/null +++ b/com.minres.scviewer.database.ui/.project @@ -0,0 +1,28 @@ + + + com.minres.scviewer.database.ui + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/com.minres.scviewer.database.ui/.settings/org.eclipse.jdt.core.prefs b/com.minres.scviewer.database.ui/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..f42de36 --- /dev/null +++ b/com.minres.scviewer.database.ui/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/com.minres.scviewer.database.ui/.settings/org.eclipse.pde.core.prefs b/com.minres.scviewer.database.ui/.settings/org.eclipse.pde.core.prefs new file mode 100644 index 0000000..f29e940 --- /dev/null +++ b/com.minres.scviewer.database.ui/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +pluginProject.extensions=false +resolve.requirebundle=false diff --git a/com.minres.scviewer.database.ui/META-INF/MANIFEST.MF b/com.minres.scviewer.database.ui/META-INF/MANIFEST.MF new file mode 100644 index 0000000..56e5712 --- /dev/null +++ b/com.minres.scviewer.database.ui/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Database UI +Bundle-SymbolicName: com.minres.scviewer.database.ui +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: MINRES Technologies GmbH +Bundle-RequiredExecutionEnvironment: JavaSE-1.7 +Export-Package: com.minres.scviewer.database.ui +Require-Bundle: com.minres.scviewer.database, + org.eclipse.jface diff --git a/com.minres.scviewer.database.ui/build.properties b/com.minres.scviewer.database.ui/build.properties new file mode 100644 index 0000000..34d2e4d --- /dev/null +++ b/com.minres.scviewer.database.ui/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/com.minres.scviewer.database.swt/pom.xml b/com.minres.scviewer.database.ui/pom.xml similarity index 82% rename from com.minres.scviewer.database.swt/pom.xml rename to com.minres.scviewer.database.ui/pom.xml index ab7a3e4..e7f049f 100644 --- a/com.minres.scviewer.database.swt/pom.xml +++ b/com.minres.scviewer.database.ui/pom.xml @@ -1,6 +1,6 @@ 4.0.0 - com.minres.scviewer.database.swt + com.minres.scviewer.database.ui 1.0.0-SNAPSHOT eclipse-plugin @@ -9,5 +9,4 @@ 1.0.0-SNAPSHOT ../com.minres.scviewer.parent - com.minres.scviewer - \ No newline at end of file + \ No newline at end of file diff --git a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/GotoDirection.java b/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/GotoDirection.java similarity index 87% rename from com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/GotoDirection.java rename to com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/GotoDirection.java index e87d8b3..4d3cd0b 100644 --- a/com.minres.scviewer.database.swt/src/com/minres/scviewer/database/swt/GotoDirection.java +++ b/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/GotoDirection.java @@ -8,6 +8,6 @@ * Contributors: * MINRES Technologies GmbH - initial API and implementation *******************************************************************************/ -package com.minres.scviewer.database.swt; +package com.minres.scviewer.database.ui; public enum GotoDirection {PREV, NEXT} \ No newline at end of file diff --git a/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/IWaveformPanel.java b/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/IWaveformPanel.java new file mode 100644 index 0000000..83e5417 --- /dev/null +++ b/com.minres.scviewer.database.ui/src/com/minres/scviewer/database/ui/IWaveformPanel.java @@ -0,0 +1,75 @@ +package com.minres.scviewer.database.ui; + +import java.beans.PropertyChangeListener; +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.widgets.Control; + +import com.minres.scviewer.database.IWaveform; +import com.minres.scviewer.database.IWaveformEvent; + +public interface IWaveformPanel extends PropertyChangeListener, ISelectionProvider{ + + String CURSOR_PROPERTY = "cursor_time"; + String MARKER_PROPERTY = "marker_time"; + + void addSelectionChangedListener(ISelectionChangedListener listener); + + void removeSelectionChangedListener(ISelectionChangedListener listener); + + Control getControl(); + + Control getNameControl(); + + Control getValueControl(); + + Control getWaveformControl(); + + ISelection getSelection(); + + void setSelection(ISelection selection); + + void setSelection(ISelection selection, boolean addIfNeeded); + + void moveSelection(GotoDirection direction); + + void moveCursor(GotoDirection direction); + + List> getStreamList(); + + void moveSelected(int i); + + long getMaxTime(); + + void setMaxTime(long maxTime); + + void setZoomLevel(int scale); + + int getZoomLevel(); + + void setCursorTime(long time); + + void setMarkerTime(long time, int index); + + long getCursorTime(); + + long getActMarkerTime(); + + long getMarkerTime(int index); + + void addPropertyChangeListener(PropertyChangeListener listener); + + void addPropertyChangeListener(String propertyName, PropertyChangeListener listener); + + void removePropertyChangeListener(PropertyChangeListener listener); + + void removePropertyChangeListener(String propertyName, PropertyChangeListener listener); + + String getScaledTime(long time); + + String[] getZoomLevels(); + +} \ No newline at end of file diff --git a/com.minres.scviewer.e4.application/Application.e4xmi b/com.minres.scviewer.e4.application/Application.e4xmi index 2532010..10cf343 100644 --- a/com.minres.scviewer.e4.application/Application.e4xmi +++ b/com.minres.scviewer.e4.application/Application.e4xmi @@ -5,7 +5,7 @@ - + @@ -30,7 +30,7 @@ - + @@ -74,7 +74,6 @@ - diff --git a/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF b/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF index 503032b..2b30b1d 100644 --- a/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF +++ b/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF @@ -14,7 +14,7 @@ Require-Bundle: javax.inject;bundle-version="1.0.0", org.eclipse.e4.core.di;bundle-version="1.5.0", org.eclipse.e4.ui.di;bundle-version="1.1.0", org.eclipse.e4.core.contexts;bundle-version="1.4.0", - com.minres.scviewer.database.swt;bundle-version="1.0.0", + com.minres.scviewer.database.ui.swt;bundle-version="1.0.0", com.minres.scviewer.database;bundle-version="1.0.0", org.eclipse.equinox.ds;bundle-version="1.4.300", org.eclipse.equinox.util;bundle-version="1.0.500", @@ -26,7 +26,8 @@ Require-Bundle: javax.inject;bundle-version="1.0.0", com.google.guava, org.eclipse.equinox.preferences, org.eclipse.core.expressions, - org.eclipse.e4.core.commands;bundle-version="0.11.0" + org.eclipse.e4.core.commands;bundle-version="0.11.0", + com.minres.scviewer.database.ui Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Import-Package: com.minres.scviewer.database, javax.inject;version="1.0.0" diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/E4LifeCycle.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/E4LifeCycle.java index e8c0efb..8a617b8 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/E4LifeCycle.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/E4LifeCycle.java @@ -94,13 +94,14 @@ public class E4LifeCycle { @Inject EModelService modelService; @Inject EPartService partService; public void openViewForFile(String name){ + File file = new File(name); MPart part = partService.createPart("com.minres.scviewer.e4.application.partdescriptor.waveformviewer"); - part.setLabel(name); + part.setLabel(file.getName()); MPartStack partStack = (MPartStack)modelService.find("org.eclipse.editorss", app); partStack.getChildren().add(part); partService.showPart(part, PartState.ACTIVATE); IEclipseContext ctx=part.getContext(); - ctx.modify("input", new File(name)); + ctx.modify("input", file); ctx.declareModifiable("input"); } } diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/NavigateEvent.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/NavigateEvent.java index 1e19253..8a528d0 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/NavigateEvent.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/NavigateEvent.java @@ -22,7 +22,7 @@ import org.eclipse.jface.viewers.IStructuredSelection; import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.IWaveform; -import com.minres.scviewer.database.swt.GotoDirection; +import com.minres.scviewer.database.ui.GotoDirection; import com.minres.scviewer.e4.application.parts.WaveformViewerPart; public class NavigateEvent { diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/NavigateTrans.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/NavigateTrans.java index e6e5341..28aeb58 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/NavigateTrans.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/NavigateTrans.java @@ -21,7 +21,7 @@ import org.eclipse.e4.ui.workbench.modeling.ESelectionService; import org.eclipse.jface.viewers.IStructuredSelection; import com.minres.scviewer.database.ITx; -import com.minres.scviewer.database.swt.GotoDirection; +import com.minres.scviewer.database.ui.GotoDirection; import com.minres.scviewer.e4.application.parts.WaveformViewerPart; public class NavigateTrans { diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/OpenHandler.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/OpenHandler.java index 203ba8c..785596c 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/OpenHandler.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/OpenHandler.java @@ -39,7 +39,7 @@ public class OpenHandler { // part.setContributionURI("bundleclass://com.minres.scviewer.e4.application/"+ // WaveformViewerPart.class.getName()); MPart part = partService .createPart("com.minres.scviewer.e4.application.partdescriptor.waveformviewer"); - part.setLabel(fileName); + part.setLabel(file.getName()); MPartStack partStack = (MPartStack)modelService.find("org.eclipse.editorss", app); diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewerPart.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewerPart.java index d529b36..54c9d2b 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewerPart.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewerPart.java @@ -52,8 +52,9 @@ import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveformDb; import com.minres.scviewer.database.IWaveformDbFactory; import com.minres.scviewer.database.IWaveformEvent; -import com.minres.scviewer.database.swt.GotoDirection; import com.minres.scviewer.database.swt.TxDisplay; +import com.minres.scviewer.database.ui.GotoDirection; +import com.minres.scviewer.database.ui.IWaveformPanel; import com.minres.scviewer.e4.application.internal.WaveStatusBarControl; public class WaveformViewerPart { @@ -70,7 +71,7 @@ public class WaveformViewerPart { public static final String WAVE_ACTION_ID = "com.minres.scviewer.ui.action.AddToWave"; - private TxDisplay txDisplay; + private IWaveformPanel waveformPane; @Inject private IEventBroker eventBroker; @@ -98,41 +99,41 @@ public class WaveformViewerPart { myParent.getDisplay().syncExec(new Runnable() { @Override public void run() { - txDisplay.setMaxTime(database.getMaxTime()); + waveformPane.setMaxTime(database.getMaxTime()); } }); } } }); - txDisplay = new TxDisplay(parent); - txDisplay.setMaxTime(0); - txDisplay.addPropertyChangeListener(TxDisplay.CURSOR_PROPERTY, new PropertyChangeListener() { + waveformPane = new TxDisplay(parent); + waveformPane.setMaxTime(0); + waveformPane.addPropertyChangeListener(IWaveformPanel.CURSOR_PROPERTY, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { Long time = (Long) evt.getNewValue(); - eventBroker.post(WaveStatusBarControl.CURSOR_TIME, txDisplay.getScaledTime(time)); - long marker=txDisplay.getActMarkerTime(); - eventBroker.post(WaveStatusBarControl.MARKER_DIFF, txDisplay.getScaledTime(time-marker)); + eventBroker.post(WaveStatusBarControl.CURSOR_TIME, waveformPane.getScaledTime(time)); + long marker=waveformPane.getActMarkerTime(); + eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(time-marker)); } }); - txDisplay.addPropertyChangeListener(TxDisplay.MARKER_PROPERTY, new PropertyChangeListener() { + waveformPane.addPropertyChangeListener(IWaveformPanel.MARKER_PROPERTY, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { Long time = (Long) evt.getNewValue(); - eventBroker.post(WaveStatusBarControl.MARKER_TIME, txDisplay.getScaledTime(time)); - long cursor=txDisplay.getCursorTime(); - eventBroker.post(WaveStatusBarControl.MARKER_DIFF, txDisplay.getScaledTime(cursor-time)); + eventBroker.post(WaveStatusBarControl.MARKER_TIME, waveformPane.getScaledTime(time)); + long cursor=waveformPane.getCursorTime(); + eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(cursor-time)); } }); - txDisplay.addSelectionChangedListener(new ISelectionChangedListener() { + waveformPane.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { if(event.getSelection() instanceof IStructuredSelection) selectionService.setSelection(event.getSelection()); } }); - zoomLevel=txDisplay.getZoomLevels(); + zoomLevel=waveformPane.getZoomLevels(); filesToLoad=new ArrayList(); persistedState = part.getPersistedState(); Integer files = persistedState.containsKey(DATABASE_FILE+"S")?Integer.parseInt(persistedState.get(DATABASE_FILE+"S")):0; @@ -141,10 +142,10 @@ public class WaveformViewerPart { } if(filesToLoad.size()>0) loadDatabase(); - eventBroker.post(WaveStatusBarControl.ZOOM_LEVEL, zoomLevel[txDisplay.getZoomLevel()]); - menuService.registerContextMenu(txDisplay.getNameControl(), "com.minres.scviewer.e4.application.popupmenu.namecontext"); - menuService.registerContextMenu(txDisplay.getValueControl(), "com.minres.scviewer.e4.application.popupmenu.namecontext"); - menuService.registerContextMenu(txDisplay.getWaveformControl(), "com.minres.scviewer.e4.application.popupmenu.wavecontext"); + eventBroker.post(WaveStatusBarControl.ZOOM_LEVEL, zoomLevel[waveformPane.getZoomLevel()]); + menuService.registerContextMenu(waveformPane.getNameControl(), "com.minres.scviewer.e4.application.popupmenu.namecontext"); + menuService.registerContextMenu(waveformPane.getValueControl(), "com.minres.scviewer.e4.application.popupmenu.namecontext"); + menuService.registerContextMenu(waveformPane.getWaveformControl(), "com.minres.scviewer.e4.application.popupmenu.wavecontext"); } protected void loadDatabase() { @@ -158,7 +159,7 @@ public class WaveformViewerPart { for(File file: filesToLoad){ //TimeUnit.SECONDS.sleep(2); database.load(file); - database.addPropertyChangeListener(txDisplay); + database.addPropertyChangeListener(waveformPane); subMonitor.worked(1); if(monitor.isCanceled()) return Status.CANCEL_STATUS; } @@ -180,7 +181,7 @@ public class WaveformViewerPart { myParent.getDisplay().asyncExec(new Runnable() { @Override public void run() { - txDisplay.setMaxTime(database.getMaxTime()); + waveformPane.setMaxTime(database.getMaxTime()); restoreState(); } }); @@ -234,9 +235,9 @@ public class WaveformViewerPart { persistedState.put(DATABASE_FILE+index, file.getAbsolutePath()); index++; } - persistedState.put(SHOWN_WAVEFORM+"S", Integer.toString(txDisplay.getStreamList().size())); + persistedState.put(SHOWN_WAVEFORM+"S", Integer.toString(waveformPane.getStreamList().size())); index=0; - for(IWaveform waveform:txDisplay.getStreamList()){ + for(IWaveform waveform:waveformPane.getStreamList()){ persistedState.put(SHOWN_WAVEFORM+index, waveform.getFullName()); index++; } @@ -250,17 +251,17 @@ public class WaveformViewerPart { IWaveform waveform = database.getStreamByName(persistedState.get(SHOWN_WAVEFORM+i)); if(waveform!=null) res.add(waveform); } - if(res.size()>0) txDisplay.getStreamList().addAll(res); + if(res.size()>0) waveformPane.getStreamList().addAll(res); } private void updateAll() { eventBroker.post(ACTIVE_WAVEFORMVIEW, this); - eventBroker.post(WaveStatusBarControl.ZOOM_LEVEL, zoomLevel[txDisplay.getZoomLevel()]); - long cursor=txDisplay.getCursorTime(); - long marker=txDisplay.getActMarkerTime(); - eventBroker.post(WaveStatusBarControl.CURSOR_TIME, txDisplay.getScaledTime(cursor)); - eventBroker.post(WaveStatusBarControl.MARKER_TIME, txDisplay.getScaledTime(marker)); - eventBroker.post(WaveStatusBarControl.MARKER_DIFF, txDisplay.getScaledTime(cursor-marker)); + eventBroker.post(WaveStatusBarControl.ZOOM_LEVEL, zoomLevel[waveformPane.getZoomLevel()]); + long cursor=waveformPane.getCursorTime(); + long marker=waveformPane.getActMarkerTime(); + eventBroker.post(WaveStatusBarControl.CURSOR_TIME, waveformPane.getScaledTime(cursor)); + eventBroker.post(WaveStatusBarControl.MARKER_TIME, waveformPane.getScaledTime(marker)); + eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(cursor-marker)); } @Inject @Optional @@ -327,20 +328,20 @@ public class WaveformViewerPart { List> streams= new LinkedList<>(); for(IWaveform stream:iWaveforms) streams.add(stream); - IStructuredSelection selection = (IStructuredSelection) txDisplay.getSelection(); + IStructuredSelection selection = (IStructuredSelection) waveformPane.getSelection(); if(selection.size()==0) - txDisplay.getStreamList().addAll(streams); + waveformPane.getStreamList().addAll(streams); else { IWaveform selectedStream = (selection.getFirstElement() instanceof ITx)? ((ITx)selection.getFirstElement()).getStream():(IWaveform)selection.getFirstElement(); - int index = txDisplay.getStreamList().indexOf(selectedStream); + int index = waveformPane.getStreamList().indexOf(selectedStream); if(!insert) index++; - txDisplay.getStreamList().addAll(index, streams); + waveformPane.getStreamList().addAll(index, streams); } } public void removeStreamFromList(IWaveform obj){ - txDisplay.getStreamList().remove(obj); + waveformPane.getStreamList().remove(obj); } public void removeStreamsFromList(IWaveform[] iWaveforms){ @@ -349,43 +350,43 @@ public class WaveformViewerPart { } public List> getStreamList(){ - return txDisplay.getStreamList(); + return waveformPane.getStreamList(); } public void moveSelected(int i) { - txDisplay.moveSelected(i); + waveformPane.moveSelected(i); } public void moveSelection(GotoDirection direction) { - txDisplay.moveSelection(direction); + waveformPane.moveSelection(direction); } public void moveCursor(GotoDirection direction) { - txDisplay.moveCursor(direction); } + waveformPane.moveCursor(direction); } public void setZoomLevel(Integer level) { if(level<0) level=0; if(level>zoomLevel.length-1) level=zoomLevel.length-1; - txDisplay.setZoomLevel(level); + waveformPane.setZoomLevel(level); updateAll(); } public void setZoomFit() { - txDisplay.setZoomLevel(6); + waveformPane.setZoomLevel(6); updateAll(); } public int getZoomLevel() { - return txDisplay.getZoomLevel(); + return waveformPane.getZoomLevel(); } public ISelection getSelection() { - return txDisplay.getSelection(); + return waveformPane.getSelection(); } public void setSelection(IStructuredSelection structuredSelection) { - txDisplay.setSelection(structuredSelection, true); + waveformPane.setSelection(structuredSelection, true); } public String getScaledTime(Long time) { - return txDisplay.getScaledTime(time); + return waveformPane.getScaledTime(time); } } diff --git a/com.minres.scviewer.e4.product/SCViewer.launch b/com.minres.scviewer.e4.product/SCViewer.launch index 950fc88..c5fab17 100644 --- a/com.minres.scviewer.e4.product/SCViewer.launch +++ b/com.minres.scviewer.e4.product/SCViewer.launch @@ -23,7 +23,7 @@ - + diff --git a/com.minres.scviewer.e4.product/scviewer.product b/com.minres.scviewer.e4.product/scviewer.product index af56310..9f47bdd 100644 --- a/com.minres.scviewer.e4.product/scviewer.product +++ b/com.minres.scviewer.e4.product/scviewer.product @@ -38,8 +38,9 @@ - + + diff --git a/com.minres.scviewer.feature/feature.xml b/com.minres.scviewer.feature/feature.xml index dc97d88..289e335 100644 --- a/com.minres.scviewer.feature/feature.xml +++ b/com.minres.scviewer.feature/feature.xml @@ -45,7 +45,8 @@ http://www.eclipse.org/legal/epl-v10.html - + + @@ -88,7 +89,14 @@ http://www.eclipse.org/legal/epl-v10.html version="0.0.0"/> + + ../com.minres.scviewer.database.sqlite ../com.minres.scviewer.database.text ../com.minres.scviewer.database.vcd - ../com.minres.scviewer.database.swt + ../com.minres.scviewer.database.ui + ../com.minres.scviewer.database.ui.swt ../com.minres.scviewer.e4.application ../com.minres.scviewer.ui - ../com.minres.scviewer.feature + ../com.minres.scviewer.feature ../com.minres.scviewer.updateSite ../com.minres.scviewer.e4.product 0.23.1 - 2.8.0-01 - + ${tycho-version} + 2.8.0-01 + 2.1.8-01 - + @@ -82,6 +84,59 @@ + + + org.eclipse.tycho.extras + tycho-source-feature-plugin + ${tycho-extras-version} + + + + source-feature + package + + source-feature + + + + + + + + + + + + + + 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 + + + + \ No newline at end of file diff --git a/com.minres.scviewer.ui/META-INF/MANIFEST.MF b/com.minres.scviewer.ui/META-INF/MANIFEST.MF index 9d1cdbc..e0f930a 100644 --- a/com.minres.scviewer.ui/META-INF/MANIFEST.MF +++ b/com.minres.scviewer.ui/META-INF/MANIFEST.MF @@ -6,7 +6,8 @@ Bundle-Version: 1.0.0.qualifier Bundle-Activator: com.minres.scviewer.ui.TxEditorPlugin Bundle-Vendor: MINRES Technologies GmbH Require-Bundle: com.minres.scviewer.database;bundle-version="1.0.0", - com.minres.scviewer.database.swt;bundle-version="1.0.0", + com.minres.scviewer.database.ui;bundle-version="1.0.0", + com.minres.scviewer.database.ui.swt;bundle-version="1.0.0", org.eclipse.core.runtime, org.eclipse.core.resources, org.eclipse.jface.text, diff --git a/com.minres.scviewer.ui/src/com/minres/scviewer/ui/TxEditorPart.java b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/TxEditorPart.java index 31e608a..5c39c8c 100644 --- a/com.minres.scviewer.ui/src/com/minres/scviewer/ui/TxEditorPart.java +++ b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/TxEditorPart.java @@ -48,8 +48,9 @@ import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveformDb; import com.minres.scviewer.database.IWaveformDbFactory; import com.minres.scviewer.database.IWaveformEvent; -import com.minres.scviewer.database.swt.GotoDirection; import com.minres.scviewer.database.swt.TxDisplay; +import com.minres.scviewer.database.ui.GotoDirection; +import com.minres.scviewer.database.ui.IWaveformPanel; import com.minres.scviewer.ui.views.TxOutlinePage; public class TxEditorPart extends EditorPart implements ITabbedPropertySheetPageContributor { @@ -112,7 +113,7 @@ public class TxEditorPart extends EditorPart implements ITabbedPropertySheetPage }); txDisplay = new TxDisplay(parent); txDisplay.setMaxTime(0); - txDisplay.addPropertyChangeListener(TxDisplay.CURSOR_PROPERTY, new PropertyChangeListener() { + txDisplay.addPropertyChangeListener(IWaveformPanel.CURSOR_PROPERTY, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { Long time = (Long) evt.getNewValue(); diff --git a/com.minres.scviewer.ui/src/com/minres/scviewer/ui/handler/GotoNext.java b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/handler/GotoNext.java index a4db93e..2e8b036 100644 --- a/com.minres.scviewer.ui/src/com/minres/scviewer/ui/handler/GotoNext.java +++ b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/handler/GotoNext.java @@ -16,7 +16,7 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.handlers.HandlerUtil; -import com.minres.scviewer.database.swt.GotoDirection; +import com.minres.scviewer.database.ui.GotoDirection; import com.minres.scviewer.ui.TxEditorPart; public class GotoNext extends AbstractHandler { diff --git a/com.minres.scviewer.ui/src/com/minres/scviewer/ui/handler/GotoPrev.java b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/handler/GotoPrev.java index 7900321..b1f5f72 100644 --- a/com.minres.scviewer.ui/src/com/minres/scviewer/ui/handler/GotoPrev.java +++ b/com.minres.scviewer.ui/src/com/minres/scviewer/ui/handler/GotoPrev.java @@ -16,7 +16,7 @@ import org.eclipse.core.commands.ExecutionException; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.handlers.HandlerUtil; -import com.minres.scviewer.database.swt.GotoDirection; +import com.minres.scviewer.database.ui.GotoDirection; import com.minres.scviewer.ui.TxEditorPart; public class GotoPrev extends AbstractHandler { diff --git a/com.minres.scviewer.updateSite/pom.xml b/com.minres.scviewer.updateSite/pom.xml index 9262df2..eb71dbd 100644 --- a/com.minres.scviewer.updateSite/pom.xml +++ b/com.minres.scviewer.updateSite/pom.xml @@ -17,6 +17,4 @@ --> - com.minres.scviewer - 1.0.0-SNAPSHOT - \ No newline at end of file + \ No newline at end of file