Merge branch 'release/2.2.0'
This commit is contained in:
		| @@ -88,6 +88,8 @@ public class TextDbLoader implements IWaveformDbLoader{ | ||||
| 			} | ||||
| 		} catch (IndexOutOfBoundsException e) { | ||||
| 			return false | ||||
| 		} catch (IllegalArgumentException e) { | ||||
| 			return false | ||||
| 		} catch (NumberFormatException e) { | ||||
| 			return false | ||||
| 		} catch(EOFException e) { | ||||
|   | ||||
| @@ -2,7 +2,7 @@ Manifest-Version: 1.0 | ||||
| Bundle-ManifestVersion: 2 | ||||
| Bundle-Name: SWT widget | ||||
| Bundle-SymbolicName: com.minres.scviewer.database.ui.swt | ||||
| Bundle-Version: 2.0.2.qualifier | ||||
| Bundle-Version: 2.1.0.qualifier | ||||
| Bundle-Vendor: MINRES Technologies GmbH | ||||
| Bundle-RequiredExecutionEnvironment: JavaSE-1.8 | ||||
| Require-Bundle: org.eclipse.swt;bundle-version="3.103.1", | ||||
|   | ||||
| @@ -8,5 +8,5 @@ | ||||
|   	<version>2.0.0-SNAPSHOT</version> | ||||
|   	<relativePath>../com.minres.scviewer.parent</relativePath> | ||||
|   </parent> | ||||
|   <version>2.0.2-SNAPSHOT</version> | ||||
|   <version>2.1.0-SNAPSHOT</version> | ||||
| </project> | ||||
| @@ -229,6 +229,11 @@ public class WaveformCanvas extends Canvas{ | ||||
|     } | ||||
|  | ||||
|     public void setZoomLevel(int level) { | ||||
| 		long tc=cursorPainters.get(0).getTime(); // cursor time | ||||
| 		setZoomLevel(level, tc); | ||||
|     } | ||||
|  | ||||
|     public void setZoomLevel(int level, long centerTime) { | ||||
|     	long oldScaleFactor=scaleFactor; | ||||
|     	if(level<Constants.unitMultiplier.length*Constants.unitString.length){ | ||||
|     		this.level = level; | ||||
| @@ -242,10 +247,9 @@ public class WaveformCanvas extends Canvas{ | ||||
|     		 * xcn = tc/newScaleFactor | ||||
|     		 * t0n = (xcn-xoffs)*scaleFactor | ||||
|     		 */ | ||||
|     		long tc=cursorPainters.get(0).getTime(); // cursor time | ||||
|     		long xc=tc/oldScaleFactor; // cursor total x-offset | ||||
|     		long xc=centerTime/oldScaleFactor; // cursor total x-offset | ||||
|     		long xoffs=xc+origin.x; // cursor offset relative to left border | ||||
|     		long xcn=tc/scaleFactor; // new total x-offset | ||||
|     		long xcn=centerTime/scaleFactor; // new total x-offset | ||||
|     		long originX=xcn-xoffs; | ||||
|     		if(originX>0) { | ||||
|     			origin.x=(int) -originX; // new cursor time offset relative to left border | ||||
| @@ -557,7 +561,7 @@ public class WaveformCanvas extends Canvas{ | ||||
|     	return (getClientArea().width+origin.x)*scaleFactor; | ||||
|     } | ||||
|  | ||||
|     long getOriginTime() { | ||||
|     long getMinVisibleTime() { | ||||
|     	return origin.x * scaleFactor; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -40,6 +40,7 @@ import org.eclipse.swt.dnd.DND; | ||||
| import org.eclipse.swt.dnd.DragSource; | ||||
| import org.eclipse.swt.dnd.DragSourceAdapter; | ||||
| import org.eclipse.swt.dnd.DragSourceEvent; | ||||
| import org.eclipse.swt.dnd.DragSourceListener; | ||||
| import org.eclipse.swt.dnd.DropTarget; | ||||
| import org.eclipse.swt.dnd.DropTargetAdapter; | ||||
| import org.eclipse.swt.dnd.DropTargetEvent; | ||||
| @@ -50,6 +51,9 @@ import org.eclipse.swt.events.DisposeListener; | ||||
| import org.eclipse.swt.events.MouseAdapter; | ||||
| import org.eclipse.swt.events.MouseEvent; | ||||
| import org.eclipse.swt.events.MouseListener; | ||||
| import org.eclipse.swt.events.MouseMoveListener; | ||||
| import org.eclipse.swt.events.PaintEvent; | ||||
| import org.eclipse.swt.events.PaintListener; | ||||
| import org.eclipse.swt.events.SelectionAdapter; | ||||
| import org.eclipse.swt.events.SelectionEvent; | ||||
| import org.eclipse.swt.graphics.Font; | ||||
| @@ -139,14 +143,21 @@ public class WaveformViewer implements IWaveformViewer  { | ||||
| 			} | ||||
| 		} | ||||
| 	}; | ||||
|  | ||||
| 	protected MouseListener waveformMouseListener = new MouseAdapter(){ | ||||
| 		Point start; | ||||
| 	 | ||||
| 	class WaveformMouseListener implements MouseMoveListener, MouseListener, PaintListener { | ||||
| 		Point start, end; | ||||
| 		List<Object> initialSelected; | ||||
| 		boolean down=false; | ||||
|  | ||||
| 		@Override | ||||
| 		public void mouseDoubleClick(MouseEvent e) { | ||||
| 		} | ||||
|  | ||||
| 		@Override | ||||
| 		public void mouseDown(MouseEvent e) { | ||||
| 			start=new Point(e.x, e.y); | ||||
| 			end=new Point(e.x, e.y); | ||||
| 			down=true; | ||||
| 			if((e.stateMask&SWT.MODIFIER_MASK)!=0) return; //don't react on modifier | ||||
| 			if (e.button ==  1) {	 | ||||
| 				initialSelected = waveformCanvas.getClicked(start); | ||||
| @@ -156,28 +167,87 @@ public class WaveformViewer implements IWaveformViewer  { | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		@Override | ||||
| 		public void mouseMove(MouseEvent e) { | ||||
| 			if(down) { | ||||
| 				end=new Point(e.x, e.y); | ||||
| 				asyncUpdate(e.widget); | ||||
| 			}	 | ||||
| 		} | ||||
| 		 | ||||
| 		@Override | ||||
| 		public void paintControl(PaintEvent e) { | ||||
| 			if(down) { | ||||
| 	            GC gc = e.gc; | ||||
| 	            gc.setAlpha(128); | ||||
| 	            int minX = Math.min(start.x, end.x); | ||||
| 	            int maxX = Math.max(start.x, end.x); | ||||
| 	            int width = maxX - minX; | ||||
| 	            gc.fillRectangle(minX, 0, width, e.height); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		@Override | ||||
| 		public void mouseUp(MouseEvent e) { | ||||
| 			down=false; | ||||
| 			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((e.stateMask&SWT.MODIFIER_MASK&~SWT.SHIFT)!=0) return; //don't react on modifier except shift | ||||
| 			if(!start.equals(end)){ | ||||
| 				asyncUpdate(e.widget); | ||||
| 				long startTime = waveformCanvas.getTimeForOffset(start.x); | ||||
| 				long endTime = waveformCanvas.getTimeForOffset(end.x); | ||||
| 				long targetTimeRange = endTime-startTime; | ||||
| 				long currentTimeRange = waveformCanvas.getMaxVisibleTime()-waveformCanvas.getMinVisibleTime(); | ||||
| 				if(targetTimeRange==0) return; | ||||
| 				long relation = currentTimeRange/targetTimeRange; | ||||
| 				long i = 1; | ||||
| 				int level=0;//relation>0?0:0; | ||||
| 				do { | ||||
| 					if(relation<0 ) { | ||||
| 						if(-relation<i) { | ||||
| 							break; | ||||
| 						} | ||||
| 						level--; | ||||
| 						if(-relation<i*3) { | ||||
| 							break; | ||||
| 						} | ||||
| 						level--;						 | ||||
| 					} else { | ||||
| 						if(relation<i) { | ||||
| 							break; | ||||
| 						} | ||||
| 						level++; | ||||
| 						if(relation<i*3) { | ||||
| 							break; | ||||
| 						} | ||||
| 						level++; | ||||
| 					} | ||||
| 					i=i*10; | ||||
| 				} while(i<10000); | ||||
| 				if(i<10000) { | ||||
| 					int curLevel = waveformCanvas.getZoomLevel(); | ||||
| 					waveformCanvas.setZoomLevel(curLevel-level, (startTime+endTime)/2); | ||||
| 				} | ||||
| 			} else if (e.button ==  1 && ((e.stateMask&SWT.SHIFT)==0)) { | ||||
| 				// set cursor (button 1 and no shift) | ||||
| 				if(Math.abs(e.x-start.x)<3 && Math.abs(e.y-start.y)<3){				 | ||||
| 					// first set cursor time | ||||
| 					setCursorTime(snapOffsetToEvent(e)); | ||||
| 					setCursorTime(snapOffsetToEvent(start)); | ||||
| 					// then set selection and reveal | ||||
| 					setSelection(new StructuredSelection(initialSelected)); | ||||
| 					asyncUpdate(e.widget); | ||||
| 				} | ||||
| 			}else if (e.button ==  2 ||(e.button==1 && (e.stateMask&SWT.SHIFT)!=0)) { | ||||
| 				setMarkerTime(snapOffsetToEvent(e), selectedMarker); | ||||
| 				// set marker (button 1 and shift) | ||||
| 				setMarkerTime(snapOffsetToEvent(start), selectedMarker); | ||||
| 				asyncUpdate(e.widget); | ||||
| 			}         | ||||
| 		} | ||||
|  | ||||
| 		protected long snapOffsetToEvent(MouseEvent e) { | ||||
| 			long time= waveformCanvas.getTimeForOffset(e.x); | ||||
| 		 | ||||
| 		protected long snapOffsetToEvent(Point p) { | ||||
| 			long time= waveformCanvas.getTimeForOffset(p.x); | ||||
| 			long scaling=5*waveformCanvas.getScaleFactor(); | ||||
| 			for(Object o:waveformCanvas.getClicked(start)){ | ||||
| 			for(Object o:waveformCanvas.getClicked(p)){ | ||||
| 				Entry<Long, ?> floorEntry=null, ceilEntry=null; | ||||
| 				if(o instanceof TrackEntry){  | ||||
| 					TrackEntry entry = (TrackEntry) o; | ||||
| @@ -209,7 +279,9 @@ public class WaveformViewer implements IWaveformViewer  { | ||||
| 			} | ||||
| 			return time; | ||||
| 		} | ||||
|  | ||||
| 	}; | ||||
| 	protected WaveformMouseListener waveformMouseListener = new WaveformMouseListener(); | ||||
|  | ||||
| 	public WaveformViewer(Composite parent) { | ||||
| 		pcs=new PropertyChangeSupport(this); | ||||
| @@ -309,6 +381,8 @@ public class WaveformViewer implements IWaveformViewer  { | ||||
|  | ||||
| 		waveformCanvas.setMaxTime(1);  | ||||
| 		waveformCanvas.addMouseListener(waveformMouseListener); | ||||
| 		waveformCanvas.addMouseMoveListener(waveformMouseListener); | ||||
| 		waveformCanvas.addPaintListener(waveformMouseListener); | ||||
| 		 | ||||
| 		nameListScrolled.getVerticalBar().addSelectionListener(new SelectionAdapter() { | ||||
| 			public void widgetSelected(SelectionEvent e) { | ||||
| @@ -1230,13 +1304,6 @@ public class WaveformViewer implements IWaveformViewer  { | ||||
| 		if(percent<-100) percent=-100; | ||||
| 		if(percent>100) percent=100; | ||||
| 		int diff = (waveformCanvas.getWidth()*percent)/100; | ||||
| //		ScrollBar sb = waveformCanvas.getHorizontalBar(); | ||||
| //		int x = sb.getSelection(); | ||||
| //		System.out.println("Setting sb to "+ (x+diff)); | ||||
| //		if((x+diff)>0) | ||||
| //			sb.setSelection(x+diff); | ||||
| //		else | ||||
| //			sb.setSelection(0); | ||||
| 		Point o = waveformCanvas.getOrigin(); | ||||
| 		waveformCanvas.setOrigin(o.x-diff, o.y); | ||||
| 		waveformCanvas.redraw(); | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmlns:ui="http://www.eclipse.org/ui/2010/UIModel/application/ui" xmi:id="_95PfsHNmEeWBq8z1Dv39LA" elementId="org.eclipse.e4.ide.application" bindingContexts="_95PfuXNmEeWBq8z1Dv39LA"> | ||||
|   <children xsi:type="basic:TrimmedWindow" xmi:id="_95PfsXNmEeWBq8z1Dv39LA" label="SC Viewer" width="980" height="700"> | ||||
|   <children xsi:type="basic:TrimmedWindow" xmi:id="_95PfsXNmEeWBq8z1Dv39LA" label="SC Viewer" bindingContexts="_95PfunNmEeWBq8z1Dv39LA" width="980" height="700"> | ||||
|     <children xsi:type="advanced:PerspectiveStack" xmi:id="_95QGxnNmEeWBq8z1Dv39LA"> | ||||
|       <children xsi:type="advanced:Perspective" xmi:id="_95QGx3NmEeWBq8z1Dv39LA"> | ||||
|         <children xsi:type="basic:PartSashContainer" xmi:id="_95QGyHNmEeWBq8z1Dv39LA" horizontal="true"> | ||||
|           <children xsi:type="basic:Part" xmi:id="_95QGynNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.parts.DesignBrowser" containerData="20" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.DesignBrowser" label="Design Browser"> | ||||
|           <children xsi:type="basic:Part" xmi:id="_95QGynNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.parts.DesignBrowser" containerData="2000" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.DesignBrowser" label="Design Browser" bindingContexts="_iQ3kQGVmEeqSQM-A6dw9ig"> | ||||
|             <handlers xmi:id="_JIWOYIq-EeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.handler.addWaveformCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.AddWaveformHandler" command="_2PehEHr9EeWVM_sKoXvptg"/> | ||||
|             <menus xsi:type="menu:PopupMenu" xmi:id="_HvUl8Iq-EeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.parts.DesignBrowser.popupmenu"> | ||||
|               <children xsi:type="menu:HandledMenuItem" xmi:id="_HvUl8Yq-EeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.handledmenuitem.append" label="Append after" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/append_wave.png" command="_2PehEHr9EeWVM_sKoXvptg"> | ||||
| @@ -25,19 +25,19 @@ | ||||
|               </children> | ||||
|             </menus> | ||||
|           </children> | ||||
|           <children xsi:type="basic:PartSashContainer" xmi:id="_uT9BIHgtEeWwZ-9vrAR2UQ" elementId="" containerData="80"> | ||||
|             <children xsi:type="basic:PartStack" xmi:id="_95QGyXNmEeWBq8z1Dv39LA" elementId="org.eclipse.editorss" containerData="75"> | ||||
|           <children xsi:type="basic:PartSashContainer" xmi:id="_uT9BIHgtEeWwZ-9vrAR2UQ" elementId="" containerData="8000"> | ||||
|             <children xsi:type="basic:PartStack" xmi:id="_95QGyXNmEeWBq8z1Dv39LA" elementId="org.eclipse.editorss" containerData="7500"> | ||||
|               <tags>NoAutoCollapse</tags> | ||||
|             </children> | ||||
|             <children xsi:type="basic:Part" xmi:id="_vtfm8HgtEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.parts.WaveformDetails" containerData="25" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.TransactionDetails" label="Waveform Details"/> | ||||
|             <children xsi:type="basic:Part" xmi:id="_vtfm8HgtEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.parts.WaveformDetails" containerData="2500" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.TransactionDetails" label="Waveform Details"/> | ||||
|           </children> | ||||
|         </children> | ||||
|       </children> | ||||
|     </children> | ||||
|     <children xsi:type="basic:Part" xmi:id="__VNlAIytEeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.dialog.aboutscviewer" toBeRendered="false" visible="false" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.AboutDialog" label="About SCViewer"/> | ||||
|     <children xsi:type="basic:Part" xmi:id="__VNlAIytEeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.dialog.aboutscviewer" toBeRendered="false" visible="false" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.AboutDialog" label="About SCViewer" bindingContexts="_95Pfu3NmEeWBq8z1Dv39LA"/> | ||||
|     <mainMenu xmi:id="_95PfyXNmEeWBq8z1Dv39LA" elementId="menu:org.eclipse.ui.main.menu"> | ||||
|       <children xsi:type="menu:Menu" xmi:id="_95QGwHNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.menu.file" label="File"> | ||||
|         <children xsi:type="menu:HandledMenuItem" xmi:id="_VJG3YHgvEeWwZ-9vrAR2UQ" elementId="" label="Open Database" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_database.png" command="_95PfwHNmEeWBq8z1Dv39LA"/> | ||||
|         <children xsi:type="menu:HandledMenuItem" xmi:id="_VJG3YHgvEeWwZ-9vrAR2UQ" elementId="" label="Open Database" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_database.png" mnemonics="M1+O" command="_95PfwHNmEeWBq8z1Dv39LA"/> | ||||
|         <children xsi:type="menu:HandledMenuItem" xmi:id="_e7MOYJedEeW09eyIbHsdvg" elementId="" label="Load active tab settings" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_page.png" command="_7-AIMJebEeW09eyIbHsdvg"> | ||||
|           <parameters xmi:id="_4vtYgJehEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.parameter.30" name="com.minres.scviewer.e4.application.commandparameter.loadStore" value="load"/> | ||||
|         </children> | ||||
| @@ -88,7 +88,9 @@ | ||||
|         <children xsi:type="menu:HandledToolItem" xmi:id="_o9UBUJeiEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.handledtoolitem.loadsettings" label="Load settings" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_page.png" command="_7-AIMJebEeW09eyIbHsdvg"> | ||||
|           <parameters xmi:id="_tQZAEJeiEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.parameter.32" name="com.minres.scviewer.e4.application.commandparameter.loadStore" value="load"/> | ||||
|         </children> | ||||
|         <children xsi:type="menu:HandledToolItem" xmi:id="_95QGznNmEeWBq8z1Dv39LA" toBeRendered="false" visible="false" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/save_edit.png" command="_95Pfw3NmEeWBq8z1Dv39LA"/> | ||||
|         <children xsi:type="menu:HandledToolItem" xmi:id="_95QGznNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handledtoolitem.savesettings" toBeRendered="false" visible="false" label="Save settings" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/save_edit.png" command="_7-AIMJebEeW09eyIbHsdvg"> | ||||
|           <parameters xmi:id="_HHALEGVSEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.parameter.32" name="com.minres.scviewer.e4.application.commandparameter.loadStore" value="store"/> | ||||
|         </children> | ||||
|       </children> | ||||
|       <children xsi:type="menu:ToolBar" xmi:id="_VUv_AHckEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.toolbar.0"> | ||||
|         <children xsi:type="menu:HandledToolItem" xmi:id="_EboiQHcjEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.handledtoolitem.removestream" label="Remove Stream" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/cross.png" tooltip="Remove stream/waveform from list" command="_WUZ2wHXHEeWwZ-9vrAR2UQ"/> | ||||
| @@ -155,16 +157,49 @@ | ||||
|   <handlers xmi:id="_V4EscIuGEeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.handler.setreleationtype" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.SetRelationTypeHandler" command="_E9lUgIt2EeWid7xO48ZBXw"/> | ||||
|   <handlers xmi:id="__99WoJebEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.handler.loadStoreSettings" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.LoadStoreSettingsHandler" command="_7-AIMJebEeW09eyIbHsdvg"/> | ||||
|   <bindingTables xmi:id="_95PfvnNmEeWBq8z1Dv39LA" bindingContext="_95PfuXNmEeWBq8z1Dv39LA"> | ||||
|     <bindings xmi:id="_95Pfv3NmEeWBq8z1Dv39LA" keySequence="M1+Q" command="_95PfvHNmEeWBq8z1Dv39LA"/> | ||||
|     <bindings xmi:id="_95PfwnNmEeWBq8z1Dv39LA" keySequence="M1+O" command="_95PfwHNmEeWBq8z1Dv39LA"/> | ||||
|     <bindings xmi:id="_95PfxXNmEeWBq8z1Dv39LA" keySequence="M1+S" command="_95Pfw3NmEeWBq8z1Dv39LA"/> | ||||
|     <bindings xmi:id="_95PfyHNmEeWBq8z1Dv39LA" keySequence="M1+A" command="_bV-TMHXHEeWwZ-9vrAR2UQ"/> | ||||
|     <bindings xmi:id="_95Pfv3NmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.keybinding.quit" keySequence="M1+Q" command="_95PfvHNmEeWBq8z1Dv39LA"> | ||||
|       <tags>type:user</tags> | ||||
|     </bindings> | ||||
|   </bindingTables> | ||||
|   <bindingTables xmi:id="_zZFy0GVNEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.bindingtable.waveform" bindingContext="_q4VSsGVNEeqSQM-A6dw9ig"> | ||||
|     <bindings xmi:id="_1o3dEGVNEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.keybinding.zoom_in" keySequence="M1++" command="_693GoHcqEeWwZ-9vrAR2UQ"> | ||||
|       <tags>type:user</tags> | ||||
|       <parameters xmi:id="_53UagGVNEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.parameter.33" name="com.minres.scviewer.e4.application.command.zoomcommand.parameter.level" value="in"/> | ||||
|     </bindings> | ||||
|     <bindings xmi:id="_8i3awGVNEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.keybinding.zoom_out" keySequence="M1+-" command="_693GoHcqEeWwZ-9vrAR2UQ"> | ||||
|       <tags>type:user</tags> | ||||
|       <parameters xmi:id="__UCh4GVNEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.parameter.34" name="com.minres.scviewer.e4.application.command.zoomcommand.parameter.level" value="out"/> | ||||
|     </bindings> | ||||
|   </bindingTables> | ||||
|   <bindingTables xmi:id="_XullMGVOEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.bindingtable.window" bindingContext="_95PfunNmEeWBq8z1Dv39LA"> | ||||
|     <bindings xmi:id="_95PfwnNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.keybinding.load" keySequence="M1+L" command="_7-AIMJebEeW09eyIbHsdvg"> | ||||
|       <tags>type:user</tags> | ||||
|       <parameters xmi:id="_G_ulwGVPEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.parameter.35" name="com.minres.scviewer.e4.application.commandparameter.loadStore" value="load"/> | ||||
|     </bindings> | ||||
|     <bindings xmi:id="_95PfxXNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.keybinding.save" keySequence="M1+S" command="_7-AIMJebEeW09eyIbHsdvg"> | ||||
|       <tags>type:user</tags> | ||||
|       <parameters xmi:id="_NJlf8GVPEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.parameter.36" name="com.minres.scviewer.e4.application.commandparameter.loadStore" value="store"/> | ||||
|     </bindings> | ||||
|     <bindings xmi:id="_s7JNEGVPEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.keybinding.preferences" keySequence="M1+," command="_AxH6sIl_EeWxJ_wPkM6yGQ"> | ||||
|       <tags>type:user</tags> | ||||
|     </bindings> | ||||
|     <bindings xmi:id="_3PRIQGVPEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.keybinding.open" keySequence="M1+O" command="_95PfwHNmEeWBq8z1Dv39LA"> | ||||
|       <tags>type:user</tags> | ||||
|     </bindings> | ||||
|   </bindingTables> | ||||
|   <bindingTables xmi:id="_mnMrUGVmEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.bindingtable.0" bindingContext="_iQ3kQGVmEeqSQM-A6dw9ig"> | ||||
|     <bindings xmi:id="_n9yDwGVmEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.keybinding.0" keySequence="M1+A" command="_bV-TMHXHEeWwZ-9vrAR2UQ"> | ||||
|       <tags>type:user</tags> | ||||
|     </bindings> | ||||
|   </bindingTables> | ||||
|   <rootContext xmi:id="_95PfuXNmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows"> | ||||
|     <children xmi:id="_95PfunNmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.contexts.window" name="In Windows"/> | ||||
|     <children xmi:id="_95PfunNmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.contexts.window" name="In Windows"> | ||||
|       <children xmi:id="_q4VSsGVNEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.bindingcontext.waveform" name="In Waveform Part"/> | ||||
|       <children xmi:id="_iQ3kQGVmEeqSQM-A6dw9ig" elementId="com.minres.scviewer.e4.application.bindingcontext.indesignbrowser" name="In DesignBrowser"/> | ||||
|     </children> | ||||
|     <children xmi:id="_95Pfu3NmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/> | ||||
|   </rootContext> | ||||
|   <descriptors xmi:id="_KicY0HRMEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.partdescriptor.waveformviewer" label="SCViewer" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/scviewer.png" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.WaveformViewer"> | ||||
|   <descriptors xmi:id="_KicY0HRMEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.partdescriptor.waveformviewer" label="SCViewer" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/scviewer.png" bindingContexts="_q4VSsGVNEeqSQM-A6dw9ig" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.WaveformViewer"> | ||||
|     <tags>categoryTag:General</tags> | ||||
|     <handlers xmi:id="_BSIuEHacEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.handler.navigateEventCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.NavigateEvent" command="_79rx4HabEeWwZ-9vrAR2UQ"/> | ||||
|     <handlers xmi:id="_JpdGwHXKEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.handler.navigateTransCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.NavigateTrans" command="_Gn3lEHXKEeWwZ-9vrAR2UQ"/> | ||||
|   | ||||
| @@ -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.6.qualifier | ||||
| Bundle-Version: 2.2.0.qualifier | ||||
| Bundle-Vendor: %Bundle-Vendor | ||||
| Require-Bundle: javax.inject;bundle-version="1.0.0", | ||||
|   org.eclipse.core.runtime;bundle-version="3.11.1", | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
|   <modelVersion>4.0.0</modelVersion> | ||||
|   <artifactId>com.minres.scviewer.e4.application</artifactId> | ||||
|   <version>2.1.6-SNAPSHOT</version> | ||||
|   <version>2.2.0-SNAPSHOT</version> | ||||
|   <parent> | ||||
|   	<groupId>com.minres.scviewer</groupId> | ||||
|   	<artifactId>com.minres.scviewer.parent</artifactId> | ||||
|   | ||||
| @@ -11,13 +11,33 @@ | ||||
|   | ||||
| package com.minres.scviewer.e4.application.handlers; | ||||
|  | ||||
| import javax.inject.Inject; | ||||
|  | ||||
| import org.eclipse.e4.core.di.annotations.Execute; | ||||
| import org.eclipse.e4.core.di.annotations.Optional; | ||||
| import org.eclipse.e4.ui.model.application.ui.basic.MPart; | ||||
| import org.eclipse.e4.ui.workbench.modeling.EPartService; | ||||
|  | ||||
| import com.minres.scviewer.e4.application.parts.DesignBrowser; | ||||
|  | ||||
| public class SelectAllHandler { | ||||
|  | ||||
| 	@Inject @Optional DesignBrowser designBrowser; | ||||
|  | ||||
| 	@Execute | ||||
| 	public void execute() { | ||||
| 		 | ||||
| 	public void execute(EPartService partService) { | ||||
| 		if(designBrowser==null) designBrowser = getListPart(partService); | ||||
| 		if(designBrowser!=null){ | ||||
| 			designBrowser.selectAllWaveforms(); | ||||
| 		} | ||||
| 	} | ||||
| 		 | ||||
|  | ||||
| 	protected DesignBrowser getListPart(EPartService partService){ | ||||
| 		MPart part = partService.getActivePart(); | ||||
| 		if(part.getObject() instanceof DesignBrowser) | ||||
| 			return (DesignBrowser) part.getObject(); | ||||
| 		else | ||||
| 			return null; | ||||
| 	}	 | ||||
|  | ||||
| } | ||||
| @@ -13,9 +13,9 @@ package com.minres.scviewer.e4.application.parts; | ||||
| import java.beans.PropertyChangeEvent; | ||||
| import java.beans.PropertyChangeListener; | ||||
| import java.lang.annotation.Annotation; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.List; | ||||
| import java.util.regex.Matcher; | ||||
| import java.util.regex.Pattern; | ||||
| import java.util.regex.PatternSyntaxException; | ||||
|  | ||||
| @@ -133,7 +133,7 @@ public class DesignBrowser { | ||||
| 	private TableViewer txTableViewer; | ||||
|  | ||||
| 	/** The append all item. */ | ||||
| 	ToolItem appendItem, insertItem, insertAllItem, appendAllItem; | ||||
| 	ToolItem appendItem, insertItem; | ||||
|  | ||||
| 	/** The other selection count. */ | ||||
| 	int thisSelectionCount=0, otherSelectionCount=0; | ||||
| @@ -287,7 +287,6 @@ public class DesignBrowser { | ||||
| 				updateButtons(); | ||||
| 			} | ||||
| 		}); | ||||
|  | ||||
| 		menuService.registerContextMenu(txTableViewer.getControl(), POPUP_ID); | ||||
|  | ||||
| 		ToolBar toolBar = new ToolBar(parent, SWT.FLAT | SWT.RIGHT); | ||||
| @@ -322,48 +321,6 @@ public class DesignBrowser { | ||||
| 					ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); | ||||
| 			} | ||||
| 		}); | ||||
| 		new ToolItem(toolBar, SWT.SEPARATOR); | ||||
|  | ||||
| 		appendAllItem = new ToolItem(toolBar, SWT.NONE); | ||||
| 		appendAllItem.setToolTipText(Messages.DesignBrowser_12); | ||||
| 		appendAllItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/append_all_waves.png")); //$NON-NLS-1$ //$NON-NLS-2$ | ||||
| 		appendAllItem.setEnabled(false); | ||||
|  | ||||
| 		new ToolItem(toolBar, SWT.SEPARATOR); | ||||
| 		appendAllItem.addSelectionListener(new SelectionAdapter() { | ||||
| 			@Override | ||||
| 			public void widgetSelected(SelectionEvent e) { | ||||
| 				Object[] all = getFilteredChildren(txTableViewer); | ||||
| 				if(all.length>0){ | ||||
| 					Object oldSel=selectionService.getSelection(); | ||||
| 					selectionService.setSelection(new StructuredSelection(all)); | ||||
| 					AddWaveformHandler myHandler = new AddWaveformHandler(); | ||||
| 					Object result = runCommand(myHandler, CanExecute.class, "after", false); //$NON-NLS-1$ | ||||
| 					if(result!=null && (Boolean)result) | ||||
| 						ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); | ||||
| 					selectionService.setSelection(oldSel); | ||||
| 				} | ||||
| 			} | ||||
| 		}); | ||||
| 		insertAllItem = new ToolItem(toolBar, SWT.NONE); | ||||
| 		insertAllItem.setToolTipText(Messages.DesignBrowser_16); | ||||
| 		insertAllItem.setImage(ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/insert_all_waves.png")); //$NON-NLS-1$ //$NON-NLS-2$ | ||||
| 		insertAllItem.setEnabled(false); | ||||
| 		insertAllItem.addSelectionListener(new SelectionAdapter() { | ||||
| 			@Override | ||||
| 			public void widgetSelected(SelectionEvent e) { | ||||
| 				Object[] all = getFilteredChildren(txTableViewer); | ||||
| 				if(all.length>0){ | ||||
| 					Object oldSel=selectionService.getSelection(); | ||||
| 					selectionService.setSelection(new StructuredSelection(all)); | ||||
| 					AddWaveformHandler myHandler = new AddWaveformHandler(); | ||||
| 					Object result = runCommand(myHandler, CanExecute.class, "before", false); //$NON-NLS-1$ | ||||
| 					if(result!=null && (Boolean)result) | ||||
| 						ContextInjectionFactory.invoke(myHandler, Execute.class, eclipseCtx); | ||||
| 					selectionService.setSelection(oldSel); | ||||
| 				} | ||||
| 			} | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -391,6 +348,16 @@ public class DesignBrowser { | ||||
| 		txTableViewer.setSelection(null); | ||||
| 	} | ||||
|  | ||||
| 	public void selectAllWaveforms() { | ||||
| 		int itemCount = txTableViewer.getTable().getItemCount(); | ||||
| 		ArrayList<Object> list = new ArrayList<>(); | ||||
| 		for(int i=0; i<itemCount; i++) { | ||||
| 			list.add(txTableViewer.getElementAt(i)); | ||||
| 		} | ||||
| 		StructuredSelection sel = new StructuredSelection(list); | ||||
| 		txTableViewer.setSelection(sel); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Gets the status event. | ||||
| 	 * | ||||
| @@ -458,17 +425,12 @@ public class DesignBrowser { | ||||
| 	 * Update buttons. | ||||
| 	 */ | ||||
| 	private void updateButtons() { | ||||
| 		if(txTableViewer!=null && !insertItem.isDisposed() && !appendItem.isDisposed() &&  | ||||
| 				!appendAllItem.isDisposed() && !insertAllItem.isDisposed()){ | ||||
| 		if(txTableViewer!=null && !insertItem.isDisposed() && !appendItem.isDisposed()){ | ||||
| 			AddWaveformHandler myHandler = new AddWaveformHandler(); | ||||
| 			Object result = runCommand(myHandler, CanExecute.class, "after", false); //$NON-NLS-1$ | ||||
| 			appendItem.setEnabled(result instanceof Boolean && (Boolean)result); | ||||
| 			result = runCommand(myHandler, CanExecute.class, "after", true); //$NON-NLS-1$ | ||||
| 			appendAllItem.setEnabled(result instanceof Boolean && (Boolean)result); | ||||
| 			result = runCommand(myHandler, CanExecute.class, "before", false); //$NON-NLS-1$ | ||||
| 			insertItem.setEnabled(result instanceof Boolean && (Boolean)result); | ||||
| 			result = runCommand(myHandler, CanExecute.class, "before", true); //$NON-NLS-1$ | ||||
| 			insertAllItem.setEnabled(result instanceof Boolean && (Boolean)result); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -65,16 +65,12 @@ 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; | ||||
| import org.eclipse.swt.graphics.RGB; | ||||
| import org.eclipse.swt.graphics.Rectangle; | ||||
| 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.MessageBox; | ||||
|  | ||||
| import com.minres.scviewer.database.ITx; | ||||
| import com.minres.scviewer.database.ITxEvent; | ||||
| @@ -281,38 +277,30 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis | ||||
| 				} | ||||
| 			} | ||||
| 		}); | ||||
| 		/* | ||||
| 		waveformPane.getWaveformControl().addMouseTrackListener(new MouseTrackListener() { | ||||
| 			 | ||||
| 			@Override | ||||
| 			public void mouseHover(MouseEvent e) { | ||||
| 				// TODO Auto-generated method stub | ||||
| 				 | ||||
| 			} | ||||
| 			 | ||||
| 			@Override | ||||
| 			public void mouseExit(MouseEvent e) { | ||||
| 				// TODO Auto-generated method stub | ||||
| 				 | ||||
| 			} | ||||
| 			 | ||||
| 			@Override | ||||
| 			public void mouseEnter(MouseEvent e) { | ||||
| 				// TODO Auto-generated method stub | ||||
| 				 | ||||
| 			} | ||||
| 		}); | ||||
| 		 | ||||
| 		waveformPane.getWaveformControl().addMouseWheelListener(new MouseWheelListener() { | ||||
| 			 | ||||
| 			@Override | ||||
| 			public void mouseScrolled(MouseEvent e) { | ||||
| 				// TODO Auto-generated method stub | ||||
| 				 | ||||
| 			} | ||||
| 		}); | ||||
| 		 | ||||
| 		*/ | ||||
| 		waveformPane.getWaveformControl().addListener(SWT.KeyDown, new Listener() { | ||||
| 			 | ||||
| 			@SuppressWarnings("null") | ||||
| 			@Override | ||||
| 			public void handleEvent(Event e) { | ||||
| @@ -616,8 +604,6 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis | ||||
| 	} | ||||
|  | ||||
| 	public void saveState(String fileName){ | ||||
| 		 | ||||
| 				 | ||||
| 		Map<String, String> persistedState = new HashMap<>(); | ||||
| 		persistedState.put(DATABASE_FILE + "S", Integer.toString(filesToLoad.size())); //$NON-NLS-1$ | ||||
| 		Integer index = 0; | ||||
| @@ -634,8 +620,6 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis | ||||
| 				FileOutputStream out = new FileOutputStream(fileName); | ||||
|                 props.store(out, "Written by SCViewer"); //$NON-NLS-1$ | ||||
| 			    out.close(); | ||||
| 			 | ||||
| 			 | ||||
| 		} catch (IOException e) { | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| @@ -929,10 +913,13 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis | ||||
| 			Object first = selection.getFirstElement(); | ||||
| 			IWaveform stream = (first instanceof ITx) ? ((ITx) first).getStream() : (IWaveform) first; | ||||
| 			TrackEntry trackEntry = waveformPane.getEntryForStream(stream); | ||||
| 			int index = waveformPane.getStreamList().indexOf(trackEntry); | ||||
| 			if (!insert) | ||||
| 				index++; | ||||
| 			waveformPane.getStreamList().addAll(index, streams); | ||||
| 			if (insert) { | ||||
| 				int index = waveformPane.getStreamList().indexOf(trackEntry); | ||||
| 				waveformPane.getStreamList().addAll(index, streams); | ||||
| 			} else { | ||||
| 				waveformPane.getStreamList().addAll(streams); | ||||
| 			} | ||||
|  | ||||
| 		} | ||||
| 		setFocus(); | ||||
| 	} | ||||
| @@ -1043,7 +1030,6 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis | ||||
| 	 * Sets the zoom fit. | ||||
| 	 */ | ||||
| 	public void setZoomFit() { | ||||
|  | ||||
| 		//actual max time of signal | ||||
| 		long maxTime = waveformPane.getMaxTime(); | ||||
| 		 | ||||
|   | ||||
| @@ -10,7 +10,7 @@ | ||||
| 		<relativePath>../com.minres.scviewer.parent</relativePath> | ||||
| 	</parent> | ||||
| 	<artifactId>com.minres.scviewer.e4.product</artifactId> | ||||
|   	<version>2.1.6-SNAPSHOT</version> | ||||
|   	<version>2.2.0-SNAPSHOT</version> | ||||
| 	<packaging>eclipse-repository</packaging> | ||||
| 	<groupId>com.minres.scviewer</groupId> | ||||
| 	<build> | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <?pde version="3.5"?> | ||||
|  | ||||
| <product name="SCViewer" uid="scviewer" id="com.minres.scviewer.e4.application.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="2.1.6.qualifier" useFeatures="false" includeLaunchers="true"> | ||||
| <product name="SCViewer" uid="scviewer" id="com.minres.scviewer.e4.application.product" application="org.eclipse.e4.ui.workbench.swt.E4Application" version="2.2.0.qualifier" useFeatures="false" includeLaunchers="true"> | ||||
|  | ||||
|    <configIni use="default"> | ||||
|    </configIni> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user