X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2FDefaultEditionLayer.java;fp=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2FDefaultEditionLayer.java;h=0000000000000000000000000000000000000000;hb=d917d2b10162a29cddaf8c81c362efa37abcaab9;hp=9e399f0e8d6eeaba335b72c60f4058809c935b5a;hpb=f1b87af2e0de38f1f49ab8fe68f9988018914811;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/DefaultEditionLayer.java b/org.argeo.app.ui/src/org/argeo/app/ui/DefaultEditionLayer.java deleted file mode 100644 index 9e399f0..0000000 --- a/org.argeo.app.ui/src/org/argeo/app/ui/DefaultEditionLayer.java +++ /dev/null @@ -1,289 +0,0 @@ -package org.argeo.app.ui; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import org.argeo.api.acr.Content; -import org.argeo.cms.Localized; -import org.argeo.cms.swt.CmsSwtTheme; -import org.argeo.cms.swt.CmsSwtUtils; -import org.argeo.cms.swt.acr.SwtTabbedArea; -import org.argeo.cms.swt.acr.SwtUiProvider; -import org.argeo.util.LangUtils; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.SashForm; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.osgi.framework.BundleContext; -import org.osgi.framework.Constants; -import org.osgi.framework.wiring.BundleWiring; - -/** An app layer based on an entry area and an editor area. */ -public class DefaultEditionLayer implements SuiteLayer { - private String id; - private SwtUiProvider entryArea; - private SwtUiProvider defaultView; - private SwtUiProvider workArea; - private List weights = new ArrayList<>(); - private boolean startMaximized = false; - private boolean fixedEntryArea = false; - private boolean singleTab = false; - private Localized title = null; - - @Override - public Control createUiPart(Composite parent, Content context) { - // TODO Factorize more, or split into more specialised classes? - if (entryArea != null) { - if (fixedEntryArea) { - FixedEditionArea editionArea = new FixedEditionArea(parent, parent.getStyle()); - Control entryAreaC = entryArea.createUiPart(editionArea.getEntryArea(), context); - CmsSwtUtils.style(entryAreaC, SuiteStyle.entryArea); - if (this.defaultView != null) { - editionArea.getTabbedArea().view(defaultView, context); - } - return editionArea; - } else { - SashFormEditionArea editionArea = new SashFormEditionArea(parent, parent.getStyle()); - entryArea.createUiPart(editionArea.getEntryArea(), context); - if (this.defaultView != null) { - editionArea.getTabbedArea().view(defaultView, context); - } - return editionArea; - } - } else { - if (this.workArea != null) { - Composite area = new Composite(parent, SWT.NONE); - this.workArea.createUiPart(area, context); - return area; - } - CmsSwtTheme theme = CmsSwtUtils.getCmsTheme(parent); - SwtTabbedArea tabbedArea = createTabbedArea(parent, theme); - return tabbedArea; - } - } - - @Override - public void view(SwtUiProvider uiProvider, Composite workAreaC, Content context) { - if (workArea != null) { - CmsSwtUtils.clear(workAreaC); - workArea.createUiPart(workAreaC, context); - workAreaC.layout(true, true); - return; - } - - // tabbed area - SwtTabbedArea tabbedArea = findTabbedArea(workAreaC); - if (tabbedArea == null) - throw new IllegalArgumentException("Unsupported work area " + workAreaC.getClass().getName()); - if (uiProvider == null) { - // reset - tabbedArea.closeAllTabs(); - if (this.defaultView != null) { - tabbedArea.view(defaultView, context); - } - } else { - tabbedArea.view(uiProvider, context); - } - } - - @Override - public Content getCurrentContext(Composite workArea) { - SwtTabbedArea tabbedArea = findTabbedArea(workArea); - if (tabbedArea == null) - return null; - return tabbedArea.getCurrentContext(); - } - - private SwtTabbedArea findTabbedArea(Composite workArea) { - SwtTabbedArea tabbedArea = null; - if (workArea instanceof SashFormEditionArea) { - tabbedArea = ((SashFormEditionArea) workArea).getTabbedArea(); - } else if (workArea instanceof FixedEditionArea) { - tabbedArea = ((FixedEditionArea) workArea).getTabbedArea(); - } else if (workArea instanceof SwtTabbedArea) { - tabbedArea = (SwtTabbedArea) workArea; - } - return tabbedArea; - } - - @Override - public void open(SwtUiProvider uiProvider, Composite workArea, Content context) { - SwtTabbedArea tabbedArea = ((SashFormEditionArea) workArea).getTabbedArea(); - tabbedArea.open(uiProvider, context); - } - - @Override - public Localized getTitle() { - return title; - } - - @Override - public String getId() { - return id; - } - - public void init(BundleContext bundleContext, Map properties) { - String pid = (String) properties.get(Constants.SERVICE_PID); - id = pid; - - weights = LangUtils.toStringList(properties.get(Property.weights.name())); - startMaximized = properties.containsKey(Property.startMaximized.name()) - && "true".equals(properties.get(Property.startMaximized.name())); - fixedEntryArea = properties.containsKey(Property.fixedEntryArea.name()) - && "true".equals(properties.get(Property.fixedEntryArea.name())); - if (fixedEntryArea && weights.size() != 0) { - throw new IllegalArgumentException("Property " + Property.weights.name() + " should not be set if property " - + Property.fixedEntryArea.name() + " is set."); - } - singleTab = properties.containsKey(Property.singleTab.name()) - && "true".equals(properties.get(Property.singleTab.name())); - - String titleStr = (String) properties.get(SuiteLayer.Property.title.name()); - if (titleStr != null) { - if (titleStr.startsWith("%")) { - title = new Localized() { - - @Override - public String name() { - return titleStr; - } - - @Override - public ClassLoader getL10nClassLoader() { - return bundleContext != null - ? bundleContext.getBundle().adapt(BundleWiring.class).getClassLoader() - : getClass().getClassLoader(); - } - }; - } else { - title = new Localized.Untranslated(titleStr); - } - } - } - - public void destroy(BundleContext bundleContext, Map properties) { - - } - - public void setEntryArea(SwtUiProvider entryArea) { - this.entryArea = entryArea; - } - - public void setWorkArea(SwtUiProvider workArea) { - this.workArea = workArea; - } - - public void setDefaultView(SwtUiProvider defaultView) { - this.defaultView = defaultView; - } - - SwtTabbedArea createTabbedArea(Composite parent, CmsSwtTheme theme) { - SwtTabbedArea tabbedArea = new SwtTabbedArea(parent, SWT.NONE); - tabbedArea.setSingleTab(singleTab); - tabbedArea.setBodyStyle(SuiteStyle.mainTabBody.style()); - tabbedArea.setTabStyle(SuiteStyle.mainTab.style()); - tabbedArea.setTabSelectedStyle(SuiteStyle.mainTabSelected.style()); - tabbedArea.setCloseIcon(theme.getSmallIcon(SuiteIcon.close)); - tabbedArea.setLayoutData(CmsSwtUtils.fillAll()); - return tabbedArea; - } - -// /** A work area based on an entry area and and a tabbed area. */ - class SashFormEditionArea extends SashForm { - private static final long serialVersionUID = 2219125778722702618L; - private SwtTabbedArea tabbedArea; - private Composite entryC; - - SashFormEditionArea(Composite parent, int style) { - super(parent, SWT.HORIZONTAL); - CmsSwtTheme theme = CmsSwtUtils.getCmsTheme(parent); - - Composite editorC; - if (SWT.RIGHT_TO_LEFT == (style & SWT.RIGHT_TO_LEFT)) {// arabic, hebrew, etc. - editorC = new Composite(this, SWT.BORDER); - entryC = new Composite(this, SWT.BORDER); - } else { - entryC = new Composite(this, SWT.NONE); - editorC = new Composite(this, SWT.NONE); - } - - // sash form specific - if (weights.size() != 0) { - int[] actualWeight = new int[weights.size()]; - for (int i = 0; i < weights.size(); i++) { - actualWeight[i] = Integer.parseInt(weights.get(i)); - } - setWeights(actualWeight); - } else { - int[] actualWeights = new int[] { 3000, 7000 }; - setWeights(actualWeights); - } - if (startMaximized) - setMaximizedControl(editorC); - - GridLayout editorAreaLayout = CmsSwtUtils.noSpaceGridLayout(); -// editorAreaLayout.verticalSpacing = 0; -// editorAreaLayout.marginBottom = 0; -// editorAreaLayout.marginHeight = 0; -// editorAreaLayout.marginLeft = 0; -// editorAreaLayout.marginRight = 0; - editorC.setLayout(editorAreaLayout); - - tabbedArea = createTabbedArea(editorC, theme); - } - - SwtTabbedArea getTabbedArea() { - return tabbedArea; - } - - Composite getEntryArea() { - return entryC; - } - - } - - class FixedEditionArea extends Composite { - private static final long serialVersionUID = -5525672639277322465L; - private SwtTabbedArea tabbedArea; - private Composite entryC; - - public FixedEditionArea(Composite parent, int style) { - super(parent, style); - CmsSwtTheme theme = CmsSwtUtils.getCmsTheme(parent); - - setLayout(CmsSwtUtils.noSpaceGridLayout(2)); - - Composite editorC; - if (SWT.RIGHT_TO_LEFT == (style & SWT.RIGHT_TO_LEFT)) {// arabic, hebrew, etc. - editorC = new Composite(this, SWT.NONE); - entryC = new Composite(this, SWT.NONE); - } else { - entryC = new Composite(this, SWT.NONE); - editorC = new Composite(this, SWT.NONE); - } - entryC.setLayoutData(CmsSwtUtils.fillHeight()); - - GridLayout editorAreaLayout = CmsSwtUtils.noSpaceGridLayout(); -// editorAreaLayout.verticalSpacing = 0; -// editorAreaLayout.marginBottom = 0; -// editorAreaLayout.marginHeight = 0; -// editorAreaLayout.marginLeft = 0; -// editorAreaLayout.marginRight = 0; - editorC.setLayout(editorAreaLayout); - editorC.setLayoutData(CmsSwtUtils.fillAll()); - - tabbedArea = createTabbedArea(editorC, theme); - } - - SwtTabbedArea getTabbedArea() { - return tabbedArea; - } - - Composite getEntryArea() { - return entryC; - } - } - -} \ No newline at end of file