--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init" deactivate="destroy" immediate="false" name="Admin Lead Pane">
+ <implementation class="org.argeo.suite.ui.DefaultLeadPane"/>
+ <service>
+ <provide interface="org.argeo.cms.ui.CmsUiProvider"/>
+ </service>
+ <properties entry="config/adminLeadPane.properties"/>
+ <property name="defaultLayers" type="String">argeo.suite.ui.termsLayer
+ </property>
+ <reference bind="addLayer" cardinality="1..n" interface="org.argeo.suite.ui.SuiteLayer" name="SuiteLayer" policy="dynamic" unbind="removeLayer"/>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="init" deactivate="destroy" name="Event Recorder">
+ <implementation class="org.argeo.suite.ui.EventRecorder"/>
+ <service>
+ <provide interface="org.osgi.service.event.EventHandler"/>
+ </service>
+ <properties entry="config/eventRecorder.properties"/>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="Terms Entry Area">
+ <implementation class="org.argeo.suite.ui.TermsEntryArea"/>
+ <service>
+ <provide interface="org.argeo.cms.ui.CmsUiProvider"/>
+ </service>
+ <properties entry="config/termsEntryArea.properties"/>
+</scr:component>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="Terms Layer">
+ <implementation class="org.argeo.suite.ui.DefaultEditionLayer"/>
+ <service>
+ <provide interface="org.argeo.suite.ui.SuiteLayer"/>
+ </service>
+ <properties entry="config/termsLayer.properties"/>
+ <reference bind="setEntryArea" cardinality="1..1" interface="org.argeo.cms.ui.CmsUiProvider" name="CmsUiProvider" policy="dynamic" target="(service.pid=argeo.suite.ui.termsEntryArea)"/>
+</scr:component>
Service-Component:\
OSGI-INF/cmsApp.xml,\
+OSGI-INF/eventRecorder.xml,\
OSGI-INF/header.xml,\
OSGI-INF/footer.xml,\
OSGI-INF/leadPane.xml,\
OSGI-INF/loginScreen.xml,\
OSGI-INF/recentItems.xml,\
+OSGI-INF/adminLeadPane.xml,\
+OSGI-INF/termsEntryArea.xml,\
+OSGI-INF/termsLayer.xml,\
OSGI-INF/dashboard.xml,\
OSGI-INF/dashboardLayer.xml
--- /dev/null
+service.pid=argeo.suite.ui.adminLeadPane
--- /dev/null
+service.pid=argeo.suite.ui.eventRecorder
+
+event.topics=argeo/suite/*
\ No newline at end of file
--- /dev/null
+service.pid=argeo.suite.ui.termsEntryArea
--- /dev/null
+service.pid=argeo.suite.ui.termsLayer
+title=Terms
+icon=dashboard
+
+entity.type=entity:terms,entity:term
\ No newline at end of file
--- /dev/null
+package org.argeo.suite.ui;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
+
+/** Record UI events. */
+public class EventRecorder implements EventHandler {
+ private final static Log log = LogFactory.getLog(EventRecorder.class);
+
+ public void init() {
+
+ }
+
+ public void destroy() {
+
+ }
+
+ @Override
+ public void handleEvent(Event event) {
+ if (log.isTraceEnabled())
+ log.trace(event);
+
+ }
+
+}
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
private String headerPid;
private String footerPid;
private String leadPanePid;
+ private String adminLeadPanePid;
private String loginScreenPid;
private String defaultLayerPid = "argeo.suite.ui.dashboardLayer";
private String defaultUiName = "app";
+ private String adminUiName = "admin";
private String defaultThemeId = "org.argeo.suite.theme.default";
private Map<String, RankedObject<CmsUiProvider>> uiProvidersByPid = Collections.synchronizedMap(new HashMap<>());
headerPid = pidPrefix + "header";
footerPid = pidPrefix + "footer";
leadPanePid = pidPrefix + "leadPane";
+ adminLeadPanePid = pidPrefix + "adminLeadPane";
loginScreenPid = pidPrefix + "loginScreen";
}
public Set<String> getUiNames() {
HashSet<String> uiNames = new HashSet<>();
uiNames.add(defaultUiName);
+ uiNames.add(adminUiName);
return uiNames;
}
try {
Node context = null;
SuiteUi ui = (SuiteUi) parent;
+
+ String uiName = Objects.toString(ui.getParent().getData(UI_NAME_PROPERTY), null);
+ if (uiName == null)
+ throw new IllegalStateException("UI name should not be null");
CmsView cmsView = CmsView.getCmsView(parent);
CmsUiProvider headerUiProvider = findUiProvider(headerPid);
CmsUiProvider footerUiProvider = findUiProvider(footerPid);
- CmsUiProvider leadPaneUiProvider = findUiProvider(leadPanePid);
+ CmsUiProvider leadPaneUiProvider;
+ if (adminUiName.equals(uiName)) {
+ leadPaneUiProvider = findUiProvider(adminLeadPanePid);
+ } else {
+ leadPaneUiProvider = findUiProvider(leadPanePid);
+ }
Localized appTitle = null;
if (headerUiProvider instanceof DefaultHeader) {
private Composite footer;
private Composite belowHeader;
private Composite leadPane;
+ private Composite sidePane;
private Composite dynamicArea;
private Session sysSession;
CmsUiUtils.clear(belowHeader);
int style = getStyle();
if (initApp) {
- belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout(2));
+ belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout(3));
if (SWT.RIGHT_TO_LEFT == (style & SWT.RIGHT_TO_LEFT)) {// arabic, hebrew, etc.
+ sidePane = new Composite(belowHeader, SWT.NONE);
+ sidePane.setLayout(CmsUiUtils.noSpaceGridLayout());
+ sidePane.setLayoutData(CmsUiUtils.fillHeight());
dynamicArea = new Composite(belowHeader, SWT.NONE);
leadPane = new Composite(belowHeader, SWT.NONE);
} else {
leadPane = new Composite(belowHeader, SWT.NONE);
dynamicArea = new Composite(belowHeader, SWT.NONE);
+ sidePane = new Composite(belowHeader, SWT.NONE);
+ sidePane.setLayout(CmsUiUtils.noSpaceGridLayout());
+ sidePane.setLayoutData(CmsUiUtils.fillHeight());
}
leadPane.setLayoutData(CmsUiUtils.fillHeight());
leadPane.setLayout(CmsUiUtils.noSpaceGridLayout());
}
throw new IllegalArgumentException("Layer is not registered.");
}
-
void addLayer(String id, SuiteLayer layer) {
layers.put(id, layer);
return leadPane;
}
+ Composite getSidePane() {
+ return sidePane;
+ }
+
Composite getBelowHeader() {
return belowHeader;
}
--- /dev/null
+package org.argeo.suite.ui;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+
+import org.argeo.cms.ui.CmsUiProvider;
+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;
+
+/** Entry area for managing th etypologies. */
+public class TermsEntryArea implements CmsUiProvider {
+
+ @Override
+ public Control createUi(Composite parent, Node context) throws RepositoryException {
+ parent.setLayout(new GridLayout());
+ Label lbl = new Label(parent, SWT.NONE);
+ lbl.setText("Typologies");
+ return lbl;
+ }
+
+}