add help browser window instead of dialog
This commit is contained in:
		| @@ -1,6 +1,6 @@ | ||||
| <?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" bindingContexts="_95PfunNmEeWBq8z1Dv39LA" width="1280" height="700"> | ||||
|   <children xsi:type="basic:TrimmedWindow" xmi:id="_95PfsXNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.trimmedwindow.main" label="SC Viewer" bindingContexts="_95PfunNmEeWBq8z1Dv39LA" width="1280" height="700"> | ||||
|     <children xsi:type="advanced:PerspectiveStack" xmi:id="_95QGxnNmEeWBq8z1Dv39LA"> | ||||
|       <children xsi:type="advanced:Perspective" xmi:id="_95QGx3NmEeWBq8z1Dv39LA"> | ||||
|         <children xsi:type="basic:PartStack" xmi:id="_95QGyXNmEeWBq8z1Dv39LA" elementId="org.eclipse.editorss" containerData="7500"> | ||||
| @@ -134,6 +134,9 @@ | ||||
|       </children> | ||||
|     </trimBars> | ||||
|   </children> | ||||
|   <children xsi:type="basic:Window" xmi:id="_Gm0qAEamEeyPDuc8x6Ggxw" elementId="com.minres.scviewer.e4.application.window.help" toBeRendered="false" selectedElement="_M5eT0EamEeyPDuc8x6Ggxw" label="SC Viewer Help" width="800" height="600"> | ||||
|     <children xsi:type="basic:Part" xmi:id="_M5eT0EamEeyPDuc8x6Ggxw" elementId="com.minres.scviewer.e4.application.part.container" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.help.HelpBrowser"/> | ||||
|   </children> | ||||
|   <handlers xmi:id="_95PfvXNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handler.quitCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.QuitHandler" command="_95PfvHNmEeWBq8z1Dv39LA"/> | ||||
|   <handlers xmi:id="_95PfwXNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handler.openCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.OpenHandler" command="_95PfwHNmEeWBq8z1Dv39LA"/> | ||||
|   <handlers xmi:id="_95PfxHNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handler.saveCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.SaveHandler" command="_95Pfw3NmEeWBq8z1Dv39LA"/> | ||||
|   | ||||
| @@ -38,5 +38,6 @@ Require-Bundle: javax.inject;bundle-version="1.0.0", | ||||
|  org.eclipse.equinox.p2.metadata.repository;bundle-version="1.3.400" | ||||
| Bundle-RequiredExecutionEnvironment: JavaSE-11 | ||||
| Import-Package: com.minres.scviewer.database, | ||||
|  javax.annotation;version="1.0.0";resolution:=optional, | ||||
|  javax.inject;version="1.0.0" | ||||
| Automatic-Module-Name: com.minres.scviewer.e4.application | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								plugins/com.minres.scviewer.e4.application/icons/accept.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								plugins/com.minres.scviewer.e4.application/icons/accept.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 781 B | 
							
								
								
									
										
											BIN
										
									
								
								plugins/com.minres.scviewer.e4.application/icons/arrow_redo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								plugins/com.minres.scviewer.e4.application/icons/arrow_redo.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 625 B | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 685 B | 
							
								
								
									
										
											BIN
										
									
								
								plugins/com.minres.scviewer.e4.application/icons/arrow_undo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								plugins/com.minres.scviewer.e4.application/icons/arrow_undo.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 631 B | 
| @@ -83,6 +83,8 @@ public class Messages extends NLS { | ||||
| 	public static String cursor; | ||||
| 	public static String cursor_drag; | ||||
| 	public static String cursor_text; | ||||
| 	public static String HelpBrowser_7; | ||||
| 	public static String HelpBrowser_8; | ||||
| 	public static String HelpDialog_0; | ||||
| 	public static String HelpDialog_1; | ||||
| 	public static String HelpDialog_2; | ||||
|   | ||||
| @@ -12,20 +12,21 @@ package com.minres.scviewer.e4.application.handlers; | ||||
|  | ||||
| import org.eclipse.e4.core.di.annotations.Execute; | ||||
| import org.eclipse.e4.ui.model.application.MApplication; | ||||
| import org.eclipse.e4.ui.model.application.ui.basic.MPart; | ||||
| import org.eclipse.e4.ui.model.application.ui.basic.MWindow; | ||||
| import org.eclipse.e4.ui.model.application.ui.MUIElement; | ||||
| import org.eclipse.e4.ui.workbench.modeling.EModelService; | ||||
| import org.eclipse.swt.widgets.Shell; | ||||
|  | ||||
| public class HelpHandler { | ||||
|  | ||||
| 	static final String DIALOG_ID="com.minres.scviewer.e4.application.dialog.onlinehelp"; | ||||
| 	static final String DIALOG_ID="com.minres.scviewer.e4.application.dialog.onlinehelp"; //$NON-NLS-1$ | ||||
| 	static final String WINDOW_ID="com.minres.scviewer.e4.application.window.help"; //$NON-NLS-1$ | ||||
| 	 | ||||
| 	@Execute | ||||
| 	public void execute(Shell shell, MApplication app, MWindow window, EModelService ms /*@Named("mdialog01.dialog.0") MDialog dialog*/) { | ||||
| 		MPart mel = (MPart) ms.find(DIALOG_ID, app); //$NON-NLS-1$ | ||||
| 		mel.setToBeRendered(true); | ||||
| 		mel.setToBeRendered(false); | ||||
| 	public void execute(MApplication app, /*MWindow window,*/ EModelService ms /*@Named("mdialog01.dialog.0") MDialog dialog*/) { | ||||
| //		MPart mel = (MPart) ms.find(DIALOG_ID, app); //$NON-NLS-1$ | ||||
| //		mel.setToBeRendered(true); | ||||
| //		mel.setToBeRendered(false); | ||||
| 		MUIElement w = ms.find(WINDOW_ID, app);  | ||||
| 		if(w!=null) w.setToBeRendered(true); | ||||
| 	} | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -77,6 +77,8 @@ signal_nan=Signal NaN Value | ||||
| cursor=Cursor | ||||
| cursor_drag=dragged Cursor | ||||
| cursor_text=Cursor Text | ||||
| HelpBrowser_7=Error initializing help browser | ||||
| HelpBrowser_8=An error occurred while initializing the help browser:  | ||||
| HelpDialog_0=Back | ||||
| HelpDialog_1=Forward | ||||
| HelpDialog_2=Stop | ||||
|   | ||||
| @@ -0,0 +1,152 @@ | ||||
| package com.minres.scviewer.e4.application.parts.help; | ||||
|  | ||||
| import java.io.File; | ||||
|  | ||||
| import javax.annotation.PostConstruct; | ||||
| import javax.inject.Inject; | ||||
|  | ||||
| import org.eclipse.e4.ui.model.application.ui.basic.MPart; | ||||
| import org.eclipse.jface.dialogs.Dialog; | ||||
| import org.eclipse.jface.dialogs.IDialogConstants; | ||||
| import org.eclipse.jface.dialogs.MessageDialog; | ||||
| import org.eclipse.jface.resource.ImageDescriptor; | ||||
| import org.eclipse.jface.resource.ResourceLocator; | ||||
| import org.eclipse.swt.SWT; | ||||
| import org.eclipse.swt.SWTError; | ||||
| import org.eclipse.swt.browser.Browser; | ||||
| import org.eclipse.swt.browser.LocationListener; | ||||
| import org.eclipse.swt.browser.ProgressEvent; | ||||
| import org.eclipse.swt.browser.ProgressListener; | ||||
| import org.eclipse.swt.graphics.Image; | ||||
| import org.eclipse.swt.graphics.Point; | ||||
| import org.eclipse.swt.layout.GridData; | ||||
| import org.eclipse.swt.layout.GridLayout; | ||||
| import org.eclipse.swt.widgets.Composite; | ||||
| import org.eclipse.swt.widgets.Control; | ||||
| import org.eclipse.swt.widgets.Label; | ||||
| import org.eclipse.swt.widgets.Listener; | ||||
| import org.eclipse.swt.widgets.ProgressBar; | ||||
| import org.eclipse.swt.widgets.Shell; | ||||
| import org.eclipse.swt.widgets.Text; | ||||
| import org.eclipse.swt.widgets.ToolBar; | ||||
| import org.eclipse.swt.widgets.ToolItem; | ||||
|  | ||||
| import com.minres.scviewer.e4.application.Messages; | ||||
|  | ||||
| public class HelpBrowser { | ||||
|  | ||||
| 	private static void decorateItem(ToolItem item, String label, String imageName) { | ||||
| 		String fullpath = File.separator+"icons"+File.separator+imageName; //$NON-NLS-1$ | ||||
| 		ImageDescriptor descr =  ResourceLocator.imageDescriptorFromBundle("com.minres.scviewer.e4.application", fullpath).orElse(null); //$NON-NLS-1$ | ||||
| 		if(descr == null) { | ||||
| 			item.setText(label); | ||||
| 		} else { | ||||
| 			item.setImage(descr.createImage()); | ||||
| 			item.setToolTipText(label); | ||||
| 		} | ||||
| 		item.setData(label); | ||||
| 	} | ||||
|  | ||||
| 	@Inject | ||||
| 	public HelpBrowser() { | ||||
| 		 | ||||
| 	} | ||||
| 	 | ||||
| 	@PostConstruct | ||||
| 	protected Control createComposite(Composite container) { | ||||
| 		GridLayout gridLayout = new GridLayout(); | ||||
| 		gridLayout.numColumns = 3; | ||||
| 		container.setLayout(gridLayout); | ||||
| 		ToolBar toolbar = new ToolBar(container, SWT.NONE); | ||||
| 		ToolItem itemBack = new ToolItem(toolbar, SWT.PUSH); | ||||
| 		decorateItem(itemBack, Messages.HelpDialog_0, "arrow_undo.png"); //$NON-NLS-1$ | ||||
| 		ToolItem itemForward = new ToolItem(toolbar, SWT.PUSH); | ||||
| 		decorateItem(itemForward, Messages.HelpDialog_1, "arrow_redo.png"); //$NON-NLS-1$ | ||||
| 		ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH); | ||||
| 		decorateItem(itemStop, Messages.HelpDialog_2, "cross.png"); //$NON-NLS-1$ | ||||
| 		ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH); | ||||
| 		decorateItem(itemRefresh, Messages.HelpDialog_3, "arrow_refresh.png"); //$NON-NLS-1$ | ||||
| 		ToolItem itemGo = new ToolItem(toolbar, SWT.PUSH); | ||||
| 		decorateItem(itemGo, Messages.HelpDialog_4, "accept.png"); //$NON-NLS-1$ | ||||
|  | ||||
| 		GridData data = new GridData(); | ||||
| 		data.horizontalSpan = 3; | ||||
| 		toolbar.setLayoutData(data); | ||||
|  | ||||
| 		Label labelAddress = new Label(container, SWT.NONE); | ||||
| 		labelAddress.setText(Messages.HelpDialog_5); | ||||
|  | ||||
| 		final Text location = new Text(container, SWT.BORDER); | ||||
| 		data = new GridData(); | ||||
| 		data.horizontalAlignment = GridData.FILL; | ||||
| 		data.horizontalSpan = 2; | ||||
| 		data.grabExcessHorizontalSpace = true; | ||||
| 		location.setLayoutData(data); | ||||
|  | ||||
| 		final Browser browser; | ||||
| 		try { | ||||
| 			browser = new Browser(container, SWT.NONE); | ||||
| 			data = new GridData(); | ||||
| 			//			data.widthHint = 800; | ||||
| 			//			data.heightHint =600; | ||||
| 			data.horizontalAlignment = GridData.FILL; | ||||
| 			data.verticalAlignment = GridData.FILL; | ||||
| 			data.horizontalSpan = 3; | ||||
| 			data.grabExcessHorizontalSpace = true; | ||||
| 			data.grabExcessVerticalSpace = true; | ||||
| 			browser.setLayoutData(data); | ||||
|  | ||||
| 			final Label status = new Label(container, SWT.NONE); | ||||
| 			data = new GridData(GridData.FILL_HORIZONTAL); | ||||
| 			data.horizontalSpan = 2; | ||||
| 			status.setLayoutData(data); | ||||
|  | ||||
| 			final ProgressBar progressBar = new ProgressBar(container, SWT.NONE); | ||||
| 			data = new GridData(); | ||||
| 			data.horizontalAlignment = GridData.END; | ||||
| 			progressBar.setLayoutData(data); | ||||
|  | ||||
| 			/* event handling */ | ||||
| 			Listener listener = event -> { | ||||
| 				ToolItem item = (ToolItem) event.widget; | ||||
| 				String string = (String) item.getData(); | ||||
| 				if (string.equals(Messages.HelpDialog_0)) | ||||
| 					browser.back(); | ||||
| 				else if (string.equals(Messages.HelpDialog_1)) | ||||
| 					browser.forward(); | ||||
| 				else if (string.equals(Messages.HelpDialog_2)) | ||||
| 					browser.stop(); | ||||
| 				else if (string.equals(Messages.HelpDialog_3)) | ||||
| 					browser.refresh(); | ||||
| 				else if (string.equals(Messages.HelpDialog_4)) | ||||
| 					browser.setUrl(location.getText()); | ||||
| 			}; | ||||
| 			browser.addProgressListener(new ProgressListener() { | ||||
| 				@Override | ||||
| 				public void changed(ProgressEvent event) { | ||||
| 					if (event.total == 0) return; | ||||
| 					int ratio = event.current * 100 / event.total; | ||||
| 					progressBar.setSelection(ratio); | ||||
| 				} | ||||
| 				@Override | ||||
| 				public void completed(ProgressEvent event) { | ||||
| 					progressBar.setSelection(0); | ||||
| 				} | ||||
| 			}); | ||||
| 			browser.addStatusTextListener(event -> status.setText(event.text)); | ||||
| 			browser.addLocationListener(LocationListener.changedAdapter(event -> { if (event.top) location.setText(event.location);	})); | ||||
| 			itemBack.addListener(SWT.Selection, listener); | ||||
| 			itemForward.addListener(SWT.Selection, listener); | ||||
| 			itemStop.addListener(SWT.Selection, listener); | ||||
| 			itemRefresh.addListener(SWT.Selection, listener); | ||||
| 			itemGo.addListener(SWT.Selection, listener); | ||||
| 			location.addListener(SWT.DefaultSelection, e -> browser.setUrl(location.getText())); | ||||
| 			browser.setUrl(Messages.HelpDialog_6); | ||||
| 		} catch (SWTError e) { | ||||
| 			MessageDialog.openWarning(container.getDisplay().getActiveShell(), Messages.HelpBrowser_7,Messages.HelpBrowser_8+e.getMessage()); | ||||
| 		} | ||||
| 		return container; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user