From: Mathieu Baudier Date: Sun, 4 Oct 2020 10:43:53 +0000 (+0200) Subject: Improve Argeo Suite theming. X-Git-Tag: argeo-suite-2.1.16~86 X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=commitdiff_plain;h=a5ba54441da727f3965105a71b3a114b31dd34de Improve Argeo Suite theming. --- diff --git a/org.argeo.suite.theme.default/.project b/org.argeo.suite.theme.default/.project index 5453bb1..d157155 100644 --- a/org.argeo.suite.theme.default/.project +++ b/org.argeo.suite.theme.default/.project @@ -15,6 +15,11 @@ + + org.eclipse.pde.ds.core.builder + + + org.eclipse.pde.PluginNature diff --git a/org.argeo.suite.theme.default/OSGI-INF/cmsTheme.xml b/org.argeo.suite.theme.default/OSGI-INF/cmsTheme.xml new file mode 100644 index 0000000..66b8c44 --- /dev/null +++ b/org.argeo.suite.theme.default/OSGI-INF/cmsTheme.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/org.argeo.suite.theme.default/bnd.bnd b/org.argeo.suite.theme.default/bnd.bnd index e69de29..6c4a97c 100644 --- a/org.argeo.suite.theme.default/bnd.bnd +++ b/org.argeo.suite.theme.default/bnd.bnd @@ -0,0 +1,6 @@ +Service-Component:\ +OSGI-INF/cmsTheme.xml + +Import-Package:\ +org.argeo.cms.ui.util,\ +* \ No newline at end of file diff --git a/org.argeo.suite.theme.default/build.properties b/org.argeo.suite.theme.default/build.properties index 5f22cdd..bf450ca 100644 --- a/org.argeo.suite.theme.default/build.properties +++ b/org.argeo.suite.theme.default/build.properties @@ -1 +1,2 @@ -bin.includes = META-INF/ +bin.includes = META-INF/,\ + OSGI-INF/cmsTheme.xml diff --git a/org.argeo.suite.theme.default/icons/types/16/add.png b/org.argeo.suite.theme.default/icons/types/16/add.png new file mode 100644 index 0000000..5c06bf0 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/add.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/dashboard.png b/org.argeo.suite.theme.default/icons/types/16/dashboard.png new file mode 100644 index 0000000..1235592 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/dashboard.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/delete.png b/org.argeo.suite.theme.default/icons/types/16/delete.png new file mode 100644 index 0000000..676a39d Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/delete.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/document.png b/org.argeo.suite.theme.default/icons/types/16/document.png new file mode 100644 index 0000000..b168263 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/document.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/documents.png b/org.argeo.suite.theme.default/icons/types/16/documents.png new file mode 100644 index 0000000..56deec5 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/documents.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/folder.png b/org.argeo.suite.theme.default/icons/types/16/folder.png new file mode 100644 index 0000000..fefbb40 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/folder.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/logout.png b/org.argeo.suite.theme.default/icons/types/16/logout.png new file mode 100644 index 0000000..f685ea9 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/logout.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/organisation.png b/org.argeo.suite.theme.default/icons/types/16/organisation.png new file mode 100644 index 0000000..2e81a6c Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/organisation.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/people.png b/org.argeo.suite.theme.default/icons/types/16/people.png new file mode 100644 index 0000000..925d571 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/people.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/person.png b/org.argeo.suite.theme.default/icons/types/16/person.png new file mode 100644 index 0000000..8f518e1 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/person.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/refresh.png b/org.argeo.suite.theme.default/icons/types/16/refresh.png new file mode 100644 index 0000000..0d39107 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/refresh.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/save.png b/org.argeo.suite.theme.default/icons/types/16/save.png new file mode 100644 index 0000000..1c58ada Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/save.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/search.png b/org.argeo.suite.theme.default/icons/types/16/search.png new file mode 100644 index 0000000..d32874b Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/search.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/tag.png b/org.argeo.suite.theme.default/icons/types/16/tag.png new file mode 100644 index 0000000..cefdbb9 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/tag.png differ diff --git a/org.argeo.suite.theme.default/icons/types/16/task.png b/org.argeo.suite.theme.default/icons/types/16/task.png new file mode 100644 index 0000000..eeb7e01 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/16/task.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/add.png b/org.argeo.suite.theme.default/icons/types/32/add.png new file mode 100644 index 0000000..15feb20 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/add.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/dashboard.png b/org.argeo.suite.theme.default/icons/types/32/dashboard.png new file mode 100644 index 0000000..4c24f43 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/dashboard.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/delete.png b/org.argeo.suite.theme.default/icons/types/32/delete.png new file mode 100644 index 0000000..c74ad1a Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/delete.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/document.png b/org.argeo.suite.theme.default/icons/types/32/document.png new file mode 100644 index 0000000..a4653fa Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/document.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/documents.png b/org.argeo.suite.theme.default/icons/types/32/documents.png new file mode 100644 index 0000000..29db972 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/documents.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/folder.png b/org.argeo.suite.theme.default/icons/types/32/folder.png new file mode 100644 index 0000000..b98fc84 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/folder.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/logout.png b/org.argeo.suite.theme.default/icons/types/32/logout.png new file mode 100644 index 0000000..2d8024f Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/logout.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/organisation.png b/org.argeo.suite.theme.default/icons/types/32/organisation.png new file mode 100644 index 0000000..62890c2 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/organisation.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/people.png b/org.argeo.suite.theme.default/icons/types/32/people.png new file mode 100644 index 0000000..5f53288 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/people.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/person.png b/org.argeo.suite.theme.default/icons/types/32/person.png new file mode 100644 index 0000000..a6c5f1d Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/person.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/save.png b/org.argeo.suite.theme.default/icons/types/32/save.png new file mode 100644 index 0000000..d7597d1 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/save.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/search.png b/org.argeo.suite.theme.default/icons/types/32/search.png new file mode 100644 index 0000000..8d89a4a Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/search.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/tag.png b/org.argeo.suite.theme.default/icons/types/32/tag.png new file mode 100644 index 0000000..907e216 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/tag.png differ diff --git a/org.argeo.suite.theme.default/icons/types/32/task.png b/org.argeo.suite.theme.default/icons/types/32/task.png new file mode 100644 index 0000000..b6bd243 Binary files /dev/null and b/org.argeo.suite.theme.default/icons/types/32/task.png differ diff --git a/org.argeo.suite.theme.default/rap/work.css b/org.argeo.suite.theme.default/rap/work.css index 07589da..ab6bafd 100644 --- a/org.argeo.suite.theme.default/rap/work.css +++ b/org.argeo.suite.theme.default/rap/work.css @@ -8,4 +8,10 @@ font: bold 14px sans-serif; color: white; background-color: #204a87; +} + +Button.argeo-work-leadPane { + font: bold 14px sans-serif; + color: white; + background-color: white; } \ No newline at end of file diff --git a/org.argeo.suite.ui.rap/OSGI-INF/argeoSuiteWebApp.xml b/org.argeo.suite.ui.rap/OSGI-INF/argeoSuiteWebApp.xml deleted file mode 100644 index 9d316f4..0000000 --- a/org.argeo.suite.ui.rap/OSGI-INF/argeoSuiteWebApp.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/org.argeo.suite.ui.rap/OSGI-INF/cmsWebApp.xml b/org.argeo.suite.ui.rap/OSGI-INF/cmsWebApp.xml new file mode 100644 index 0000000..1d13e20 --- /dev/null +++ b/org.argeo.suite.ui.rap/OSGI-INF/cmsWebApp.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/org.argeo.suite.ui.rap/bnd.bnd b/org.argeo.suite.ui.rap/bnd.bnd index 121f1ab..35b671b 100644 --- a/org.argeo.suite.ui.rap/bnd.bnd +++ b/org.argeo.suite.ui.rap/bnd.bnd @@ -1,4 +1,4 @@ -Service-Component: OSGI-INF/argeoSuiteWebApp.xml +Service-Component: OSGI-INF/cmsWebApp.xml Import-Package:\ org.argeo.cms.web,\ diff --git a/org.argeo.suite.ui.rap/build.properties b/org.argeo.suite.ui.rap/build.properties index 8d783b3..6210e84 100644 --- a/org.argeo.suite.ui.rap/build.properties +++ b/org.argeo.suite.ui.rap/build.properties @@ -1,5 +1,5 @@ output.. = bin/ bin.includes = META-INF/,\ .,\ - OSGI-INF/argeoSuiteWebApp.xml + OSGI-INF/ source.. = src/ diff --git a/org.argeo.suite.ui/OSGI-INF/argeoSuiteApp.xml b/org.argeo.suite.ui/OSGI-INF/argeoSuiteApp.xml deleted file mode 100644 index d046f6b..0000000 --- a/org.argeo.suite.ui/OSGI-INF/argeoSuiteApp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/org.argeo.suite.ui/OSGI-INF/cmsApp.xml b/org.argeo.suite.ui/OSGI-INF/cmsApp.xml new file mode 100644 index 0000000..ab3a0b7 --- /dev/null +++ b/org.argeo.suite.ui/OSGI-INF/cmsApp.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/org.argeo.suite.ui/OSGI-INF/l10n/bundle.properties b/org.argeo.suite.ui/OSGI-INF/l10n/bundle.properties index 0b11430..cec63ab 100644 --- a/org.argeo.suite.ui/OSGI-INF/l10n/bundle.properties +++ b/org.argeo.suite.ui/OSGI-INF/l10n/bundle.properties @@ -1,3 +1,5 @@ dashboard=dashboard +people=contacts management +documents=documents defaultWorkAppTitle=Argeo Suite \ No newline at end of file diff --git a/org.argeo.suite.ui/OSGI-INF/leadPane.xml b/org.argeo.suite.ui/OSGI-INF/leadPane.xml index bf492a3..cf0f469 100644 --- a/org.argeo.suite.ui/OSGI-INF/leadPane.xml +++ b/org.argeo.suite.ui/OSGI-INF/leadPane.xml @@ -1,5 +1,5 @@ - + diff --git a/org.argeo.suite.ui/OSGI-INF/workHeader.xml b/org.argeo.suite.ui/OSGI-INF/workHeader.xml index 3339b47..f416750 100644 --- a/org.argeo.suite.ui/OSGI-INF/workHeader.xml +++ b/org.argeo.suite.ui/OSGI-INF/workHeader.xml @@ -1,5 +1,5 @@ - + diff --git a/org.argeo.suite.ui/bnd.bnd b/org.argeo.suite.ui/bnd.bnd index 8fd262a..ecf6fe8 100644 --- a/org.argeo.suite.ui/bnd.bnd +++ b/org.argeo.suite.ui/bnd.bnd @@ -1,5 +1,5 @@ Service-Component:\ -OSGI-INF/argeoSuiteApp.xml,\ +OSGI-INF/cmsApp.xml,\ OSGI-INF/workHeader.xml,\ OSGI-INF/leadPane.xml diff --git a/org.argeo.suite.ui/build.properties b/org.argeo.suite.ui/build.properties index 2e0c968..6210e84 100644 --- a/org.argeo.suite.ui/build.properties +++ b/org.argeo.suite.ui/build.properties @@ -1,7 +1,5 @@ output.. = bin/ bin.includes = META-INF/,\ .,\ - OSGI-INF/argeoSuiteApp.xml,\ - OSGI-INF/workHeader.xml,\ - OSGI-INF/leadPane.xml + OSGI-INF/ source.. = src/ diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteApp.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteApp.java index 7aebdc2..b669d45 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteApp.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteApp.java @@ -9,24 +9,39 @@ import javax.jcr.Node; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.cms.ui.CmsApp; +import org.argeo.cms.ui.AbstractCmsApp; +import org.argeo.cms.ui.CmsTheme; import org.argeo.cms.ui.CmsUiProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.osgi.framework.Constants; -public class ArgeoSuiteApp implements CmsApp { +/** The Argeo Suite App. */ +public class ArgeoSuiteApp extends AbstractCmsApp { private final static Log log = LogFactory.getLog(ArgeoSuiteApp.class); + public final static String PID_PREFIX = "argeo.work."; public final static String HEADER_PID = PID_PREFIX + "header"; public final static String LEAD_PANE_PID = PID_PREFIX + "leadPane"; private final static String DEFAULT_UI_NAME = "work"; + private final static String DEFAULT_THEME_ID = "org.argeo.suite.theme.default"; private ArgeoSuiteUi argeoSuiteUi; private Map uiProviders = new TreeMap<>(); + public void init(Map properties) { + if (log.isDebugEnabled()) + log.info("Argeo Suite App started"); + } + + public void destroy(Map properties) { + if (log.isDebugEnabled()) + log.info("Argeo Suite App stopped"); + + } + @Override public Set getUiNames() { HashSet uiNames = new HashSet<>(); @@ -37,12 +52,21 @@ public class ArgeoSuiteApp implements CmsApp { @Override public void initUi(String uiName, Composite parent) { if (DEFAULT_UI_NAME.equals(uiName)) { + CmsTheme theme = getTheme(uiName); + if (theme != null) + CmsTheme.registerCmsTheme(parent.getShell(), theme); argeoSuiteUi = new ArgeoSuiteUi(parent, SWT.NONE); refresh(uiName); } } + @Override + public String getThemeId(String uiName) { + // TODO make it configurable + return DEFAULT_THEME_ID; + } + public void refresh(String uiName) { if (DEFAULT_UI_NAME.equals(uiName)) { Node context = null; @@ -57,6 +81,8 @@ public class ArgeoSuiteApp implements CmsApp { log.error("No service pid found for " + uiProvider.getClass() + ", " + properties); } else { uiProviders.put(servicePid, uiProvider); + if (log.isDebugEnabled()) + log.debug("Added UI provider " + servicePid + " to CMS app."); } } diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteIcon.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteIcon.java new file mode 100644 index 0000000..220e879 --- /dev/null +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteIcon.java @@ -0,0 +1,14 @@ +package org.argeo.suite.ui; + +import org.argeo.cms.ui.util.CmsIcon; + +/** Icon names used by Argeo Suite. */ +public enum ArgeoSuiteIcon implements CmsIcon { + add, save, search, delete, logout, dashboard, + // people + people, person, organisation, + // library + documents, document, folder, + // misc + task, tag; +} diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java index 2505c45..a2caa15 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java @@ -1,10 +1,14 @@ package org.argeo.suite.ui; +import static org.argeo.suite.ui.ArgeoSuiteIcon.dashboard; + +import org.argeo.cms.ui.CmsTheme; import org.argeo.cms.ui.util.CmsUiUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; @@ -17,11 +21,15 @@ public class ArgeoSuiteUi { private SashForm dynamicArea; private Composite entryArea; - private CTabFolder editorArea; + private Composite editorArea; + private CTabFolder editorTabFolder; private Composite defaultBody; + private CmsTheme theme; + public ArgeoSuiteUi(Composite parent, int style) { + theme = CmsTheme.getCmsTheme(parent); this.parent = parent; parent.setLayout(CmsUiUtils.noSpaceGridLayout()); @@ -45,25 +53,39 @@ public class ArgeoSuiteUi { dynamicArea.setLayoutData(CmsUiUtils.fillAll()); if (SWT.RIGHT_TO_LEFT == (style & SWT.RIGHT_TO_LEFT)) {// arabic, hebrew, etc. - editorArea = new CTabFolder(dynamicArea, SWT.NONE); - entryArea = new Composite(dynamicArea, SWT.NONE); + editorArea = new Composite(dynamicArea, SWT.BORDER); + entryArea = new Composite(dynamicArea, SWT.BORDER); } else { entryArea = new Composite(dynamicArea, SWT.NONE); - editorArea = new CTabFolder(dynamicArea, SWT.NONE); + editorArea = new Composite(dynamicArea, SWT.NONE); } int[] weights = new int[] { 2000, 8000 }; dynamicArea.setWeights(weights); - - Composite buttons = new Composite(editorArea, SWT.NONE); - buttons.setLayout(new RowLayout(SWT.HORIZONTAL)); - Button delete = new Button(buttons, SWT.PUSH); - delete.setText("Delete"); - editorArea.setTopRight(buttons); - - CTabItem defaultTab = new CTabItem(editorArea, SWT.NONE); - defaultTab.setText("Home"); - defaultBody = new Composite(editorArea, SWT.NONE); + editorArea.setLayout(new GridLayout()); + + // TODO make it dynamic + RecentItems recentItems = new RecentItems(); + recentItems.createUiPart(entryArea); + + editorTabFolder = new CTabFolder(editorArea, SWT.NONE); + editorTabFolder.setLayoutData(CmsUiUtils.fillAll()); + Composite buttons = new Composite(editorTabFolder, SWT.NONE); + RowLayout buttonsLayout = new RowLayout(SWT.HORIZONTAL); + buttonsLayout.pack = false; + buttons.setLayout(buttonsLayout); + Button delete = new Button(buttons, SWT.FLAT); + delete.setImage(ArgeoSuiteIcon.delete.getSmallIcon(theme)); + // int size = ArgeoSuiteIcon.delete.getSmallIconSize(); + // delete.setBounds(delete.getBounds().x,delete.getBounds().y,size,size); + // delete.setSize(size, size); + editorTabFolder.setTopRight(buttons); + + CTabItem defaultTab = new CTabItem(editorTabFolder, SWT.NONE); + // defaultTab.setText("Home"); + defaultTab.setImage(dashboard.getSmallIcon(theme)); + defaultBody = new Composite(editorTabFolder, SWT.NONE); defaultTab.setControl(defaultBody); + editorTabFolder.setSelection(defaultTab); // editorArea.setSingle(true); } @@ -88,8 +110,8 @@ public class ArgeoSuiteUi { return entryArea; } - CTabFolder getEditorArea() { - return editorArea; + CTabFolder getEditorTabFolder() { + return editorTabFolder; } Composite getDefaultBody() { diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java index 73b81b0..d84f69d 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java @@ -1,30 +1,50 @@ package org.argeo.suite.ui; import java.util.Dictionary; +import java.util.Map; import javax.jcr.Node; import javax.jcr.RepositoryException; +import org.argeo.cms.Localized; +import org.argeo.cms.ui.CmsTheme; import org.argeo.cms.ui.CmsUiProvider; +import org.argeo.cms.ui.util.CmsIcon; import org.argeo.cms.ui.util.CmsUiUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; import org.osgi.service.cm.ConfigurationException; import org.osgi.service.cm.ManagedService; +/** Side pane listing various perspectives. */ public class DefaultLeadPane implements CmsUiProvider, ManagedService { + private CmsTheme theme; @Override - public Control createUi(Composite parent, Node context) throws RepositoryException { - parent.setLayout(new GridLayout()); + public Control createUi(Composite parent, Node node) throws RepositoryException { + theme = CmsTheme.getCmsTheme(parent); + GridLayout layout = new GridLayout(); + layout.verticalSpacing = 10; + layout.marginTop = 10; + layout.marginLeft = 10; + layout.marginRight = 10; + parent.setLayout(layout); + + Button dashboardB = createButton(parent, WorkMsg.dashboard, ArgeoSuiteIcon.dashboard); + createButton(parent, WorkMsg.people, ArgeoSuiteIcon.people); + createButton(parent, WorkMsg.documents, ArgeoSuiteIcon.documents); + return dashboardB; + } - Label dashboard = new Label(parent, SWT.NONE); - CmsUiUtils.style(dashboard, WorkStyles.leadPane); - dashboard.setText(WorkMsg.dashboard.lead()); - return dashboard; + protected Button createButton(Composite parent, Localized msg, CmsIcon icon) { + Button button = new Button(parent, SWT.FLAT); + CmsUiUtils.style(button, WorkStyles.leadPane); + button.setToolTipText(msg.lead()); + button.setImage(icon.getBigIcon(theme)); + return button; } @Override @@ -33,4 +53,7 @@ public class DefaultLeadPane implements CmsUiProvider, ManagedService { } + public void init(Map properties) { + + } } diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/RecentItems.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/RecentItems.java new file mode 100644 index 0000000..230a0da --- /dev/null +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/RecentItems.java @@ -0,0 +1,41 @@ +package org.argeo.suite.ui; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; + +import org.argeo.cms.ui.CmsTheme; +import org.argeo.cms.ui.CmsUiProvider; +import org.argeo.cms.ui.util.CmsUiUtils; +import org.argeo.connect.ui.widgets.DelayedText; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; + +/** List recent items. */ +public class RecentItems implements CmsUiProvider { + int SEARCH_TEXT_DELAY = 800; + private CmsTheme theme; + + @Override + public Control createUi(Composite parent, Node context) throws RepositoryException { + theme = CmsTheme.getCmsTheme(parent); + parent.setLayout(new GridLayout()); + + Composite top = new Composite(parent, SWT.NONE); + top.setLayoutData(CmsUiUtils.fillWidth()); + top.setLayout(new GridLayout(2, false)); + + Label search = new Label(top, SWT.NONE); + search.setImage(ArgeoSuiteIcon.search.getSmallIcon(theme)); + DelayedText delayedText = new DelayedText(top, SWT.SINGLE | SWT.BORDER, SEARCH_TEXT_DELAY); + delayedText.getText().setLayoutData(CmsUiUtils.fillWidth()); + + TableViewer viewer = new TableViewer(parent); + viewer.getTable().setLayoutData(CmsUiUtils.fillAll()); + return delayedText.getText(); + } + +} diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/WorkMsg.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/WorkMsg.java index 679ad50..f651d9f 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/WorkMsg.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/WorkMsg.java @@ -4,5 +4,5 @@ import org.argeo.cms.Localized; /** Localized messages. */ public enum WorkMsg implements Localized { - dashboard; + dashboard,people,documents; } diff --git a/sdk/argeo-suite-rap.properties b/sdk/argeo-suite-rap.properties index 4c98fc0..34153a8 100644 --- a/sdk/argeo-suite-rap.properties +++ b/sdk/argeo-suite-rap.properties @@ -13,6 +13,7 @@ org.argeo.cms argeo.osgi.start.5.suite=\ org.argeo.suite.cms,\ org.argeo.suite.ui,\ +org.argeo.suite.theme.default,\ org.argeo.suite.ui.rap # Local