From: bsinou Date: Mon, 30 Jan 2017 09:06:50 +0000 (+0100) Subject: Enhance Rap Workbench UI X-Git-Tag: argeo-suite-0.1.1~18 X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=commitdiff_plain;h=1fb1ccc2edbf7cfbdd37efc618c52b8eebe4e6be Enhance Rap Workbench UI --- diff --git a/org.argeo.suite.web/pom.xml b/org.argeo.suite.web/pom.xml index 3d1b610..998fb83 100644 --- a/org.argeo.suite.web/pom.xml +++ b/org.argeo.suite.web/pom.xml @@ -18,11 +18,6 @@ org.argeo.connect.people.web ${version.argeo-connect} - - org.argeo.connect - org.argeo.connect.ui - ${version.argeo-connect} - org.argeo.commons org.argeo.cms.ui diff --git a/org.argeo.suite.workbench.rap/META-INF/spring/osgi.xml b/org.argeo.suite.workbench.rap/META-INF/spring/osgi.xml new file mode 100644 index 0000000..3f9c473 --- /dev/null +++ b/org.argeo.suite.workbench.rap/META-INF/spring/osgi.xml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/org.argeo.suite.workbench.rap/META-INF/spring/parts.xml b/org.argeo.suite.workbench.rap/META-INF/spring/parts.xml new file mode 100644 index 0000000..a5bfde6 --- /dev/null +++ b/org.argeo.suite.workbench.rap/META-INF/spring/parts.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/org.argeo.suite.workbench.rap/bnd.bnd b/org.argeo.suite.workbench.rap/bnd.bnd index efc2cf5..9e3c867 100644 --- a/org.argeo.suite.workbench.rap/bnd.bnd +++ b/org.argeo.suite.workbench.rap/bnd.bnd @@ -12,6 +12,7 @@ javax.jcr.security,\ org.argeo.cms,\ org.argeo.cms.ui.workbench,\ org.argeo.connect.people.workbench.rap.views,\ +org.argeo.connect.ui,\ org.argeo.eclipse.spring,\ org.argeo.node,\ org.argeo.util,\ diff --git a/org.argeo.suite.workbench.rap/plugin.xml b/org.argeo.suite.workbench.rap/plugin.xml index efa841e..5315b88 100644 --- a/org.argeo.suite.workbench.rap/plugin.xml +++ b/org.argeo.suite.workbench.rap/plugin.xml @@ -17,21 +17,43 @@ point="org.eclipse.ui.perspectives"> - + + + + + + + + + + diff --git a/org.argeo.suite.workbench.rap/pom.xml b/org.argeo.suite.workbench.rap/pom.xml index b36f2a2..df9f8cd 100644 --- a/org.argeo.suite.workbench.rap/pom.xml +++ b/org.argeo.suite.workbench.rap/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 org.argeo.suite @@ -11,6 +12,11 @@ Argeo Suite Rap Workbench jar + + org.argeo.suite + org.argeo.suite.web + 0.1.1-SNAPSHOT + org.argeo.connect org.argeo.connect.people.workbench.rap diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsUiPlugin.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsUiPlugin.java index 60663a6..7cb1885 100644 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsUiPlugin.java +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsUiPlugin.java @@ -11,7 +11,7 @@ import org.osgi.framework.BundleContext; /** The activator class controls the plug-in life cycle */ public class AsUiPlugin extends AbstractUIPlugin { - public static final String PLUGIN_ID = "org.argeo.suite.workbench"; + public static final String PLUGIN_ID = "org.argeo.suite.workbench.rap"; // The shared instance private static AsUiPlugin plugin; diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsWorkbenchServiceImpl.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsWorkbenchServiceImpl.java new file mode 100644 index 0000000..b998287 --- /dev/null +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsWorkbenchServiceImpl.java @@ -0,0 +1,40 @@ +package org.argeo.suite.workbench; + +import org.argeo.connect.people.workbench.rap.PeopleWorkbenchService; +import org.argeo.connect.people.workbench.rap.PeopleWorkbenchServiceImpl; +import org.argeo.suite.workbench.parts.DefaultDashboardEditor; + +/** Centralize workbench services from the various base apps */ +public class AsWorkbenchServiceImpl extends PeopleWorkbenchServiceImpl implements PeopleWorkbenchService { + + @Override + public String getDefaultEditorId() { + return DefaultDashboardEditor.ID; + } +} + +// extends PeopleWorkbenchServiceImpl { +// +// public String getDefaultEditorId() { +// return DefaultDashboardEditor.ID; +// } +// +// // +// // @Override +// // public Image getIconForType(Node entity) { +// // try { +// // if (entity.isNodeType(AoTypes.OFFICE_ACCOUNT)) +// // return AoImages.ICON_ACCOUNT; +// // else if (entity.isNodeType(TrackerTypes.TRACKER_ISSUE)) +// // return AoImages.ICON_ISSUE; +// // else if (entity.isNodeType(TrackerTypes.TRACKER_PROJECT)) +// // return AoImages.ICON_PROJECT; +// // else if (entity.isNodeType(AoTypes.OFFICE_PROSPECT)) +// // return AoImages.ICON_PROSPECT; +// // else +// // return super.getIconForType(entity); +// // } catch (RepositoryException re) { +// // throw new PeopleException("Unable to get image for node", re); +// // } +// // } +// } diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DashboardPerspective.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DashboardPerspective.java index a05594c..edf357a 100644 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DashboardPerspective.java +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DashboardPerspective.java @@ -1,12 +1,13 @@ package org.argeo.suite.workbench; +import org.argeo.cms.ui.workbench.jcr.NodeFsBrowserView; import org.argeo.connect.people.workbench.rap.views.MyTasksView; -import org.argeo.connect.people.workbench.rap.views.PeopleDefaultView; +import org.argeo.connect.people.workbench.rap.views.QuickSearchView; import org.eclipse.ui.IFolderLayout; import org.eclipse.ui.IPageLayout; import org.eclipse.ui.IPerspectiveFactory; -/** Default office perspective */ +/** Default Argeo Suite Dashboard perspective */ public class DashboardPerspective implements IPerspectiveFactory { public void createInitialLayout(IPageLayout layout) { @@ -14,10 +15,11 @@ public class DashboardPerspective implements IPerspectiveFactory { layout.setEditorAreaVisible(true); layout.setFixed(false); - IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT, 0.25f, editorArea); + IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT, 0.33f, editorArea); + // Only show contacts if current user is a coworker + // if (CurrentUser.isInRole(Role.coworker.dn())) left.addView(MyTasksView.ID); - // Only show contacts to coworkers - // if (CurrentUser.isInRole(AoRole.coworker.dn())) - left.addView(PeopleDefaultView.ID); + left.addView(QuickSearchView.ID); + left.addView(NodeFsBrowserView.ID); } } diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/OpenDashboardEditor.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/OpenDashboardEditor.java new file mode 100644 index 0000000..6f335cc --- /dev/null +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/OpenDashboardEditor.java @@ -0,0 +1,52 @@ +package org.argeo.suite.workbench.commands; + +import javax.jcr.Node; +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; + +import org.argeo.connect.people.workbench.rap.editors.util.EntityEditorInput; +import org.argeo.jcr.JcrUtils; +import org.argeo.node.NodeUtils; +import org.argeo.suite.SuiteException; +import org.argeo.suite.workbench.AsUiPlugin; +import org.argeo.suite.workbench.parts.DefaultDashboardEditor; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.handlers.HandlerUtil; + +/** Workaround to enable opening of a default editor */ +public class OpenDashboardEditor extends AbstractHandler { + public final static String ID = AsUiPlugin.PLUGIN_ID + ".openDashboardEditor"; + + private Repository repository; + + public Object execute(ExecutionEvent event) throws ExecutionException { + Session session = null; + try { + // TODO check roles + session = repository.login(); + IWorkbenchPage iwPage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage(); + Node homeNode = NodeUtils.getUserHome(session); + EntityEditorInput eei = new EntityEditorInput(homeNode.getIdentifier()); + IEditorPart iep = iwPage.findEditor(eei); + if (iep == null) { + iwPage.openEditor(eei, DefaultDashboardEditor.ID); + } else + iwPage.activate(iep); + } catch (RepositoryException | PartInitException re) { + throw new SuiteException("Unable to open dashboard", re); + } finally { + JcrUtils.logoutQuietly(session); + } + return null; + } + + public void setRepository(Repository repository) { + this.repository = repository; + } +} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java new file mode 100644 index 0000000..6cf2bd3 --- /dev/null +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java @@ -0,0 +1,184 @@ +package org.argeo.suite.workbench.parts; + +import javax.jcr.Repository; +import javax.jcr.Session; + +import org.argeo.cms.util.CmsUtils; +import org.argeo.connect.people.PeopleService; +import org.argeo.connect.people.workbench.rap.PeopleStyles; +import org.argeo.connect.people.workbench.rap.PeopleWorkbenchService; +import org.argeo.connect.people.workbench.rap.editors.util.EntityEditorInput; +import org.argeo.connect.util.ConnectJcrUtils; +import org.argeo.eclipse.ui.EclipseUiUtils; +import org.argeo.jcr.JcrUtils; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.part.EditorPart; + +/** Generic dashboard for Argeo Suite applications */ +public abstract class AbstractSuiteDashboard extends EditorPart { + + // DEPENDENCY INJECTION + private Repository repository; + private PeopleService peopleService; + private PeopleWorkbenchService peopleWorkbenchService; + + private Session session; + + // UI Objects + private Image logoImg; + private FormToolkit toolkit; + + @Override + public void init(IEditorSite site, IEditorInput input) throws PartInitException { + setSite(site); + setInput(input); + + session = ConnectJcrUtils.login(repository); + // initialiseImg(); + updateTooltip(input); + } + + private void updateTooltip(IEditorInput input) { + if (input instanceof EntityEditorInput) { + EntityEditorInput sei = (EntityEditorInput) input; + sei.setTooltipText("My Dashboard"); + } + } + + // private void initialiseImg() { + // InputStream is = null; + // try { + // String imgPath = peopleService.getInstanceConfPath() + "/" + // + AoNames.AO_DEFAULT_LOGO; + // if (session.nodeExists(imgPath)) { + // Node imageNode = session.getNode(imgPath).getNode( + // Node.JCR_CONTENT); + // is = imageNode.getProperty(Property.JCR_DATA).getBinary() + // .getStream(); + // logoImg = new Image(this.getSite().getShell().getDisplay(), is); + // } + // } catch (RepositoryException re) { + // throw new AoException( + // "Unable to initialise specific logo for demo app", re); + // } finally { + // IOUtils.closeQuietly(is); + // } + // } + + /** + * Implementing classes must call super in order to create the correct form + * toolkit + */ + @Override + public void createPartControl(Composite parent) { + toolkit = new FormToolkit(getSite().getShell().getDisplay()); + } + + // UTILS + protected Composite createGadgetCmp(Composite parent, int widthHint, int heightHint) { + Composite gadgetCmp = toolkit.createComposite(parent, SWT.BORDER); + GridData gd = new GridData(SWT.CENTER, SWT.CENTER, false, false); + gd.widthHint = widthHint; + gd.heightHint = heightHint; + gadgetCmp.setLayoutData(gd); + CmsUtils.style(gadgetCmp, PeopleStyles.PEOPLE_CLASS_GADGET); + return gadgetCmp; + } + + protected Composite createGadgetTitleCmp(Composite parent, String title) { + Composite titleCmp = toolkit.createComposite(parent, SWT.BACKGROUND | SWT.INHERIT_NONE); + CmsUtils.style(titleCmp, PeopleStyles.GADGET_HEADER); + titleCmp.setBackground(null); + GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false); + titleCmp.setLayoutData(gd); + titleCmp.setLayout(new GridLayout()); + + Label titleLbl = toolkit.createLabel(titleCmp, title + " ", SWT.BOLD); + CmsUtils.style(titleLbl, PeopleStyles.GADGET_HEADER); + titleLbl.setBackground(null); + return titleCmp; + } + + protected Composite createGadgetBodyCmp(Composite parent) { + Composite bodyCmp = toolkit.createComposite(parent, SWT.BACKGROUND | SWT.INHERIT_NONE); + bodyCmp.setLayoutData(EclipseUiUtils.fillAll()); + bodyCmp.setLayout(new GridLayout()); + return bodyCmp; + } + + // LIFE CYCLE + @Override + public void dispose() { + JcrUtils.logoutQuietly(session); + if (logoImg != null) + logoImg.dispose(); + super.dispose(); + } + + @Override + public void doSave(IProgressMonitor monitor) { + } + + @Override + public void doSaveAs() { + } + + @Override + public boolean isDirty() { + return false; + } + + @Override + public boolean isSaveAsAllowed() { + return false; + } + + @Override + public void setFocus() { + // Do nothing + } + + // Expose to implementing classes + protected PeopleService getPeopleService() { + return peopleService; + } + + protected PeopleWorkbenchService getPeopleWorkbenchService() { + return peopleWorkbenchService; + } + + protected Session getSession() { + return session; + } + + protected Image getLogoImg() { + return logoImg; + } + + protected FormToolkit getFormToolkit() { + return toolkit; + } + + /* DEPENDENCY INJECTION */ + public void setRepository(Repository repository) { + this.repository = repository; + } + + public void setPeopleWorkbenchService(PeopleWorkbenchService peopleWorkbenchService) { + this.peopleWorkbenchService = peopleWorkbenchService; + } + + public void setPeopleService(PeopleService peopleService) { + this.peopleService = peopleService; + } +} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java new file mode 100644 index 0000000..052d2c6 --- /dev/null +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java @@ -0,0 +1,82 @@ +package org.argeo.suite.workbench.parts; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.connect.people.PeopleTypes; +import org.argeo.connect.people.workbench.rap.PeopleRapUtils; +import org.argeo.eclipse.ui.EclipseUiUtils; +import org.argeo.suite.workbench.AsUiPlugin; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; + +/** Argeo Suite Default Dashboard */ +public class DefaultDashboardEditor extends AbstractSuiteDashboard { + final static Log log = LogFactory.getLog(DefaultDashboardEditor.class); + public final static String ID = AsUiPlugin.PLUGIN_ID + ".defaultDashboardEditor"; + + // Default gadget dimensions + private int wh = 300; + private int hh = 350; + + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + + parent.setLayout(new GridLayout()); + // Main Layout + Composite body = getFormToolkit().createComposite(parent); + body.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true)); + + GridLayout bodyLayout = new GridLayout(2, true); + bodyLayout.horizontalSpacing = 20; + bodyLayout.verticalSpacing = 20; + body.setLayout(bodyLayout); + + // Project List + Composite projectsGadget = createGadgetCmp(body, wh, hh); + populateProjectsGadget(projectsGadget); + + // Contacts + Composite contactGadget = createGadgetCmp(body, wh, hh); + populateContactsGadget(contactGadget); + + } + + /** Links to the various projects */ + private void populateProjectsGadget(Composite parent) { + parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); + createGadgetTitleCmp(parent, "Projects"); + Composite bodyCmp = createGadgetBodyCmp(parent); + + // // TODO enhance this + // NodeIterator nit = AoUtils.listNodesOfType(getSession(), + // AoTypes.OFFICE_ACCOUNT, + // getAoService().getBasePath(AoTypes.OFFICE_ACCOUNT)); + // while (nit.hasNext()) { + // Node account = nit.nextNode(); + // PeopleRapUtils.createOpenEntityEditorLink(getAoWbService(), bodyCmp, + // ConnectJcrUtils.get(account, Property.JCR_TITLE), account); + // } + // + // PeopleWorkbenchService aoWbSrv = getAoWbService(); + // // Opens a lits of all projects + // + // PeopleRapUtils.createOpenSearchEditorLink(aoWbSrv, bodyCmp, "All + // projects", TrackerTypes.TRACKER_PROJECT, + // AoConstants.ACCOUNTS_BASE_PATH); + } + + /** Links to the various contact search pages */ + private void populateContactsGadget(Composite parent) { + parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); + createGadgetTitleCmp(parent, "Contacts"); + Composite bodyCmp = createGadgetBodyCmp(parent); + PeopleRapUtils.createOpenSearchEditorLink(getPeopleWorkbenchService(), bodyCmp, "Persons", + PeopleTypes.PEOPLE_PERSON, getPeopleService().getBasePath(PeopleTypes.PEOPLE_PERSON)); + + PeopleRapUtils.createOpenSearchEditorLink(getPeopleWorkbenchService(), bodyCmp, "Organisations", + PeopleTypes.PEOPLE_ORG, getPeopleService().getBasePath(PeopleTypes.PEOPLE_ORG)); + } +} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/TestView.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/TestView.java new file mode 100644 index 0000000..e45cd69 --- /dev/null +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/TestView.java @@ -0,0 +1,49 @@ +package org.argeo.suite.workbench.parts; + +import javax.jcr.Repository; +import javax.jcr.Session; + +import org.argeo.connect.util.ConnectJcrUtils; +import org.argeo.eclipse.ui.EclipseUiUtils; +import org.argeo.jcr.JcrUtils; +import org.argeo.suite.workbench.AsUiPlugin; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.part.ViewPart; + +/** Basic view to test plugin */ +public class TestView extends ViewPart { + public static final String ID = AsUiPlugin.PLUGIN_ID + ".testView"; + + /* DEPENDENCY INJECTION */ + private Repository repository; + private Session session; + + @Override + public void createPartControl(Composite parent) { + // Finalise initialisation + session = ConnectJcrUtils.login(repository); + + GridLayout layout = EclipseUiUtils.noSpaceGridLayout(); + layout.verticalSpacing = 5; + parent.setLayout(layout); + + new Label(parent, SWT.NONE).setText("Test view shown."); + } + + @Override + public void setFocus() { + } + + @Override + public void dispose() { + JcrUtils.logoutQuietly(session); + super.dispose(); + } + + public void setRepository(Repository repository) { + this.repository = repository; + } +} diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsSecureEntryPoint.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsSecureEntryPoint.java index 7c1a93a..eaf2b19 100644 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsSecureEntryPoint.java +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsSecureEntryPoint.java @@ -1,19 +1,11 @@ package org.argeo.suite.workbench.rap; -import static org.eclipse.swt.SWT.CENTER; -import static org.eclipse.swt.SWT.LEFT; -import static org.eclipse.swt.SWT.NO_FOCUS; -import static org.eclipse.swt.SWT.TOP; - import org.argeo.cms.ui.workbench.rap.RapWorkbenchAdvisor; import org.argeo.cms.ui.workbench.rap.RapWorkbenchLogin; import org.argeo.cms.util.CmsUtils; import org.argeo.cms.widgets.auth.CmsLogin; import org.argeo.eclipse.ui.EclipseUiUtils; import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.FormAttachment; -import org.eclipse.swt.layout.FormData; -import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; @@ -46,8 +38,7 @@ public class AsSecureEntryPoint extends RapWorkbenchLogin { CmsUtils.markup(headerLbl); String headerStr = " " - + " " - + ""; + + " " + ""; headerLbl.setText(headerStr); GridData gd = new GridData(SWT.LEFT, SWT.CENTER, true, false); headerLbl.setLayoutData(gd); @@ -58,7 +49,7 @@ public class AsSecureEntryPoint extends RapWorkbenchLogin { String titleStr = " Please sign in to your personal dashboard"; titleLbl.setText(titleStr); gd = new GridData(SWT.CENTER, SWT.BOTTOM, false, false); - gd.verticalIndent = 40; + gd.verticalIndent = 80; titleLbl.setLayoutData(gd); // Login composite diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWindowAdvisor.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWindowAdvisor.java index 19a98d3..7c808b7 100644 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWindowAdvisor.java +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/rap/AsWindowAdvisor.java @@ -1,6 +1,8 @@ package org.argeo.suite.workbench.rap; import org.argeo.cms.ui.workbench.rap.RapWindowAdvisor; +import org.argeo.cms.ui.workbench.util.CommandUtils; +import org.argeo.eclipse.ui.EclipseUiUtils; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; @@ -10,15 +12,13 @@ public class AsWindowAdvisor extends RapWindowAdvisor { private String username; - public AsWindowAdvisor(IWorkbenchWindowConfigurer configurer, - String username) { + public AsWindowAdvisor(IWorkbenchWindowConfigurer configurer, String username) { super(configurer, username); this.username = username; } @Override - public ActionBarAdvisor createActionBarAdvisor( - IActionBarConfigurer configurer) { + public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) { return new AsActionBarAdvisor(configurer, username); } @@ -32,5 +32,9 @@ public class AsWindowAdvisor extends RapWindowAdvisor { @Override public void postWindowOpen() { super.postWindowOpen(); + // TODO use a constant rather than a String + String openDfltEdCmdId = System.getProperty("org.argeo.ui.openHomeCommandId"); + if (EclipseUiUtils.notEmpty(openDfltEdCmdId)) + CommandUtils.callCommand(openDfltEdCmdId); } } diff --git a/org.argeo.suite.workbench.rap/theme/argeo-classic/icons/favicon-16px.png b/org.argeo.suite.workbench.rap/theme/argeo-classic/icons/favicon-16px.png new file mode 100644 index 0000000..037f929 Binary files /dev/null and b/org.argeo.suite.workbench.rap/theme/argeo-classic/icons/favicon-16px.png differ diff --git a/pom.xml b/pom.xml index 3005882..f743512 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ http://www.gnu.org/licenses/gpl-3.0.txt repo