From c474ca33d8c4b14f9c1406da512613945b8dda22 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Sat, 8 Jan 2022 18:31:27 +0100 Subject: [PATCH] use internal help browser --- .../Application.e4xmi | 5 +- .../scviewer/e4/application/Messages.java | 14 +- .../handlers/HelpContentsHandler.java | 27 ++- .../e4/application/handlers/HelpHandler.java | 9 +- .../e4/application/messages.properties | 14 +- .../e4/application/parts/HelpDialog.java | 177 ------------------ .../application/parts/help/HelpBrowser.java | 39 ++-- 7 files changed, 61 insertions(+), 224 deletions(-) delete mode 100644 plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/HelpDialog.java diff --git a/plugins/com.minres.scviewer.e4.application/Application.e4xmi b/plugins/com.minres.scviewer.e4.application/Application.e4xmi index cc44340..d8ea1ab 100644 --- a/plugins/com.minres.scviewer.e4.application/Application.e4xmi +++ b/plugins/com.minres.scviewer.e4.application/Application.e4xmi @@ -121,7 +121,7 @@ type:user - + @@ -253,6 +253,9 @@ + + + diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/Messages.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/Messages.java index 3d88974..6e683f4 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/Messages.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/Messages.java @@ -83,16 +83,14 @@ public class Messages extends NLS { public static String cursor; public static String cursor_drag; public static String cursor_text; + public static String HelpBrowser_0; + public static String HelpBrowser_1; + public static String HelpBrowser_2; + public static String HelpBrowser_3; + public static String HelpBrowser_4; + public static String HelpBrowser_5; 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; - public static String HelpDialog_3; - public static String HelpDialog_4; - public static String HelpDialog_5; - public static String HelpDialog_6; - public static String HelpDialog_7; public static String marker; public static String marker_text; public static String rel_arrow; diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/HelpContentsHandler.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/HelpContentsHandler.java index d673ba0..fc1969a 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/HelpContentsHandler.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/HelpContentsHandler.java @@ -1,15 +1,34 @@ package com.minres.scviewer.e4.application.handlers; +import org.eclipse.e4.core.contexts.IEclipseContext; +import org.eclipse.e4.core.di.annotations.CanExecute; 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.MWindow; +import org.eclipse.e4.ui.workbench.modeling.EModelService; import org.eclipse.help.internal.base.BaseHelpSystem; import org.eclipse.help.internal.server.WebappManager; public class HelpContentsHandler { - @Execute - public void execute() throws Exception { + + static final String WINDOW_ID="com.minres.scviewer.e4.application.window.help_content"; //$NON-NLS-1$ + + @CanExecute + public boolean canExecute(MApplication app) { + return !app.getChildren().stream().filter(e -> e.getElementId().equals(WINDOW_ID)).findFirst().isPresent(); + } + + @Execute + public void execute(MApplication app, EModelService modelService /*@Named("mdialog01.dialog.0") MDialog dialog*/) { BaseHelpSystem.ensureWebappRunning(); String helpURL = "http://" //$NON-NLS-1$ + WebappManager.getHost() + ":" //$NON-NLS-1$ + WebappManager.getPort() + "/help/index.jsp"; //$NON-NLS-1$ - BaseHelpSystem.getHelpBrowser(false).displayURL(helpURL); - } + // BaseHelpSystem.getHelpBrowser(false).displayURL(helpURL); + MWindow newWin = (MWindow)modelService.cloneSnippet(app, WINDOW_ID, null); + final IEclipseContext ctx=app.getContext(); + if(ctx.containsKey("help_url")) + ctx.remove("help_url"); + ctx.modify("help_url", helpURL); + app.getChildren().add(newWin); + } } \ No newline at end of file diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/HelpHandler.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/HelpHandler.java index eb00b3a..bd6292e 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/HelpHandler.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/HelpHandler.java @@ -10,6 +10,7 @@ *******************************************************************************/ package com.minres.scviewer.e4.application.handlers; +import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.model.application.MApplication; @@ -19,15 +20,19 @@ import org.eclipse.e4.ui.workbench.modeling.EModelService; public class HelpHandler { static final String WINDOW_ID="com.minres.scviewer.e4.application.window.web_help"; //$NON-NLS-1$ + @CanExecute public boolean canExecute(MApplication app) { return !app.getChildren().stream().filter(e -> e.getElementId().equals(WINDOW_ID)).findFirst().isPresent(); } @Execute - public void execute(MApplication app, MWindow window, EModelService modelService /*@Named("mdialog01.dialog.0") MDialog dialog*/) { + public void execute(MApplication app, EModelService modelService /*@Named("mdialog01.dialog.0") MDialog dialog*/) { MWindow newWin = (MWindow)modelService.cloneSnippet(app, WINDOW_ID, null); + final IEclipseContext ctx=app.getContext(); + if(ctx.containsKey("help_url")) + ctx.remove("help_url"); + ctx.modify("help_url", "https://minres.github.io/SCViewer/#key-shortcuts"); app.getChildren().add(newWin); } - } diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/messages.properties b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/messages.properties index 6c98d1c..1266f5a 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/messages.properties +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/messages.properties @@ -77,16 +77,14 @@ signal_nan=Signal NaN Value cursor=Cursor cursor_drag=dragged Cursor cursor_text=Cursor Text +HelpBrowser_0=Back +HelpBrowser_1=Forward +HelpBrowser_2=Stop +HelpBrowser_3=Refresh +HelpBrowser_4=Go +HelpBrowser_5=Address 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 -HelpDialog_3=Refresh -HelpDialog_4=Go -HelpDialog_5=Address -HelpDialog_6=https://minres.github.io/SCViewer/#key-shortcuts -HelpDialog_7=Could not instantiate Browser: marker=Marker marker_text=Marker TExt rel_arrow=Relation arrow diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/HelpDialog.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/HelpDialog.java deleted file mode 100644 index 749ab42..0000000 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/HelpDialog.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.minres.scviewer.e4.application.parts; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.IDialogConstants; -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.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 HelpDialog extends Dialog { - /** - * Create the dialog. - * - * @param parentShell the parent shell - */ - @Inject - public HelpDialog(Shell parentShell) { - super(parentShell); - setShellStyle(getShellStyle() | SWT.MODELESS | SWT.MAX | SWT.BORDER | SWT.TITLE); - setBlockOnOpen(false); - } - - @Override - protected boolean isResizable() { - return true; - } - - @Override - protected Point getInitialSize() { - return new Point(800, 600); - } - - /** - * Create contents of the dialog. - * - * @param parent the parent - * @return the control - */ - @Override - protected Control createDialogArea(Composite parent) { - Composite container = (Composite) super.createDialogArea(parent); - GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 3; - container.setLayout(gridLayout); - ToolBar toolbar = new ToolBar(container, SWT.NONE); - ToolItem itemBack = new ToolItem(toolbar, SWT.PUSH); - itemBack.setText(Messages.HelpDialog_0); - ToolItem itemForward = new ToolItem(toolbar, SWT.PUSH); - itemForward.setText(Messages.HelpDialog_1); - ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH); - itemStop.setText(Messages.HelpDialog_2); - ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH); - itemRefresh.setText(Messages.HelpDialog_3); - ToolItem itemGo = new ToolItem(toolbar, SWT.PUSH); - itemGo.setText(Messages.HelpDialog_4); - - 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 = item.getText(); - 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) { - System.out.println(Messages.HelpDialog_7 + e.getMessage()); - } - return container; - } - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite) - */ - @Override - protected void createButtonsForButtonBar(Composite parent) { - // create OK button - createButton(parent, IDialogConstants.OK_ID, IDialogConstants.CLOSE_LABEL, true); - } - - /** - * Open the dialog. - * @return the result - */ - @PostConstruct - @Override - public int open() { - return super.open(); - } - -} \ No newline at end of file diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/help/HelpBrowser.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/help/HelpBrowser.java index d962fbb..7f64fe4 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/help/HelpBrowser.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/help/HelpBrowser.java @@ -4,6 +4,7 @@ import java.io.File; import javax.annotation.PostConstruct; import javax.inject.Inject; +import javax.inject.Named; import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.ui.model.application.ui.MUIElement; @@ -48,32 +49,28 @@ public class HelpBrowser { } @PostConstruct - protected Control createComposite(Composite container) { -// container.getShell().addListener(SWT.Close, e -> { -// e.doit= false; -// element.setVisible(false); -// }); + protected Control createComposite(Composite container, @Named("help_url") String helpUrl) { 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$ + decorateItem(itemBack, Messages.HelpBrowser_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$ + decorateItem(itemForward, Messages.HelpBrowser_1, "arrow_redo.png"); //$NON-NLS-1$ ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH); - decorateItem(itemStop, Messages.HelpDialog_2, "cross.png"); //$NON-NLS-1$ + decorateItem(itemStop, Messages.HelpBrowser_2, "cross.png"); //$NON-NLS-1$ ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH); - decorateItem(itemRefresh, Messages.HelpDialog_3, "arrow_refresh.png"); //$NON-NLS-1$ + decorateItem(itemRefresh, Messages.HelpBrowser_3, "arrow_refresh.png"); //$NON-NLS-1$ ToolItem itemGo = new ToolItem(toolbar, SWT.PUSH); - decorateItem(itemGo, Messages.HelpDialog_4, "accept.png"); //$NON-NLS-1$ + decorateItem(itemGo, Messages.HelpBrowser_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); + labelAddress.setText(Messages.HelpBrowser_5); final Text location = new Text(container, SWT.BORDER); data = new GridData(); @@ -81,10 +78,8 @@ public class HelpBrowser { data.horizontalSpan = 2; data.grabExcessHorizontalSpace = true; location.setLayoutData(data); - - final Browser browser; try { - browser = new Browser(container, SWT.NONE); + final Browser browser = new Browser(container, SWT.NONE); data = new GridData(); // data.widthHint = 800; // data.heightHint =600; @@ -109,15 +104,15 @@ public class HelpBrowser { Listener listener = event -> { ToolItem item = (ToolItem) event.widget; String string = (String) item.getData(); - if (string.equals(Messages.HelpDialog_0)) + if (string.equals(Messages.HelpBrowser_0)) browser.back(); - else if (string.equals(Messages.HelpDialog_1)) + else if (string.equals(Messages.HelpBrowser_1)) browser.forward(); - else if (string.equals(Messages.HelpDialog_2)) + else if (string.equals(Messages.HelpBrowser_2)) browser.stop(); - else if (string.equals(Messages.HelpDialog_3)) + else if (string.equals(Messages.HelpBrowser_3)) browser.refresh(); - else if (string.equals(Messages.HelpDialog_4)) + else if (string.equals(Messages.HelpBrowser_4)) browser.setUrl(location.getText()); }; browser.addProgressListener(new ProgressListener() { @@ -140,14 +135,10 @@ public class HelpBrowser { itemRefresh.addListener(SWT.Selection, listener); itemGo.addListener(SWT.Selection, listener); location.addListener(SWT.DefaultSelection, e -> browser.setUrl(location.getText())); - browser.setUrl(Messages.HelpDialog_6); + browser.setUrl(helpUrl); } catch (SWTError e) { MessageDialog.openWarning(container.getDisplay().getActiveShell(), Messages.HelpBrowser_7,Messages.HelpBrowser_8+e.getMessage()); } return container; } - - void handleShellCloseEvent(){ - - } } \ No newline at end of file