From e6d2d877a7208a13c05a9c9a8b67641972f13870 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 26 Oct 2015 18:39:50 +0000 Subject: [PATCH] Introduce UX context git-svn-id: https://svn.argeo.org/commons/trunk@8528 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/cms/AbstractCmsEntryPoint.java | 1 + org.argeo.cms/src/org/argeo/cms/CmsView.java | 4 ++ .../src/org/argeo/cms/ui/UxContext.java | 9 ++++ .../org/argeo/cms/util/LoginEntryPoint.java | 9 ++++ .../org/argeo/cms/util/SimpleErgonomics.java | 10 ++++- .../org/argeo/cms/util/SimpleUxContext.java | 44 +++++++++++++++++++ 6 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 org.argeo.cms/src/org/argeo/cms/ui/UxContext.java create mode 100644 org.argeo.cms/src/org/argeo/cms/util/SimpleUxContext.java diff --git a/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java b/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java index d27ed006e..c101c021f 100644 --- a/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java +++ b/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java @@ -20,6 +20,7 @@ import org.apache.commons.logging.LogFactory; import org.argeo.ArgeoException; import org.argeo.cms.auth.AuthConstants; import org.argeo.cms.auth.HttpRequestCallbackHandler; +import org.argeo.cms.ui.UxContext; import org.argeo.eclipse.ui.specific.UiContext; import org.argeo.jcr.JcrUtils; import org.eclipse.rap.rwt.RWT; diff --git a/org.argeo.cms/src/org/argeo/cms/CmsView.java b/org.argeo.cms/src/org/argeo/cms/CmsView.java index 0ff1211b7..8b56c137b 100644 --- a/org.argeo.cms/src/org/argeo/cms/CmsView.java +++ b/org.argeo.cms/src/org/argeo/cms/CmsView.java @@ -3,10 +3,14 @@ package org.argeo.cms; import javax.security.auth.Subject; import javax.security.auth.login.LoginContext; +import org.argeo.cms.ui.UxContext; + /** Provides interaction with the CMS system. UNSTABLE API at this stage. */ public interface CmsView { public final static String KEY = "org.argeo.cms.view"; + UxContext getUxContext(); + // NAVIGATION public void navigateTo(String state); diff --git a/org.argeo.cms/src/org/argeo/cms/ui/UxContext.java b/org.argeo.cms/src/org/argeo/cms/ui/UxContext.java new file mode 100644 index 000000000..f03b88bbb --- /dev/null +++ b/org.argeo.cms/src/org/argeo/cms/ui/UxContext.java @@ -0,0 +1,9 @@ +package org.argeo.cms.ui; + +public interface UxContext { + boolean isPortrait(); + boolean isLandscape(); + boolean isSquare(); + + boolean isSmall(); +} diff --git a/org.argeo.cms/src/org/argeo/cms/util/LoginEntryPoint.java b/org.argeo.cms/src/org/argeo/cms/util/LoginEntryPoint.java index 4ccedd19b..abe670406 100644 --- a/org.argeo.cms/src/org/argeo/cms/util/LoginEntryPoint.java +++ b/org.argeo.cms/src/org/argeo/cms/util/LoginEntryPoint.java @@ -14,6 +14,7 @@ import org.argeo.cms.CmsImageManager; import org.argeo.cms.CmsView; import org.argeo.cms.auth.AuthConstants; import org.argeo.cms.auth.HttpRequestCallbackHandler; +import org.argeo.cms.ui.UxContext; import org.argeo.cms.widgets.auth.CmsLogin; import org.argeo.cms.widgets.auth.CmsLoginShell; import org.argeo.eclipse.ui.dialogs.ErrorFeedback; @@ -28,6 +29,7 @@ public class LoginEntryPoint implements EntryPoint, CmsView { // private final static Log log = LogFactory.getLog(WorkbenchLogin.class); private final Subject subject = new Subject(); private LoginContext loginContext; + private UxContext uxContext = null; @Override public int createUI() { @@ -58,6 +60,7 @@ public class LoginEntryPoint implements EntryPoint, CmsView { } catch (LoginException e) { throw new ArgeoException("Cannot log in", e); } + uxContext = new SimpleUxContext(); return postLogin(); } @@ -145,4 +148,10 @@ public class LoginEntryPoint implements EntryPoint, CmsView { // TODO Auto-generated method stub return null; } + + @Override + public UxContext getUxContext() { + return uxContext; + } + } diff --git a/org.argeo.cms/src/org/argeo/cms/util/SimpleErgonomics.java b/org.argeo.cms/src/org/argeo/cms/util/SimpleErgonomics.java index d89d54d7c..2555cade5 100644 --- a/org.argeo.cms/src/org/argeo/cms/util/SimpleErgonomics.java +++ b/org.argeo.cms/src/org/argeo/cms/util/SimpleErgonomics.java @@ -13,6 +13,7 @@ import org.argeo.cms.CmsImageManager; import org.argeo.cms.CmsStyles; import org.argeo.cms.CmsUiProvider; import org.argeo.cms.internal.ImageManagerImpl; +import org.argeo.cms.ui.UxContext; import org.eclipse.rap.rwt.RWT; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; @@ -34,6 +35,8 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { private CmsImageManager imageManager = new ImageManagerImpl(); + private UxContext uxContext = null; + public SimpleErgonomics(Repository repository, String workspace, String defaultPath, CmsUiProvider uiProvider, Map factoryProperties) { @@ -56,7 +59,7 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { bodyArea.setData(RWT.CUSTOM_VARIANT, CmsStyles.CMS_BODY); bodyArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); bodyArea.setLayout(CmsUtils.noSpaceGridLayout()); - + uxContext = new SimpleUxContext(); uiInitialized = true; refresh(); } @@ -110,6 +113,11 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { bodyArea.layout(true, true); } + @Override + public UxContext getUxContext() { + return uxContext; + } + @Override public CmsImageManager getImageManager() { return imageManager; diff --git a/org.argeo.cms/src/org/argeo/cms/util/SimpleUxContext.java b/org.argeo.cms/src/org/argeo/cms/util/SimpleUxContext.java new file mode 100644 index 000000000..ac2ea7c82 --- /dev/null +++ b/org.argeo.cms/src/org/argeo/cms/util/SimpleUxContext.java @@ -0,0 +1,44 @@ +package org.argeo.cms.util; + +import org.argeo.cms.ui.UxContext; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.widgets.Display; + +public class SimpleUxContext implements UxContext { + private Point size; + private Point small = new Point(200, 400); + + public SimpleUxContext() { + this(Display.getCurrent().getBounds()); + } + + public SimpleUxContext(Rectangle rect) { + this.size = new Point(rect.width, rect.height); + } + + public SimpleUxContext(Point size) { + this.size = size; + } + + @Override + public boolean isPortrait() { + return size.x >= size.y; + } + + @Override + public boolean isLandscape() { + return size.x < size.y; + } + + @Override + public boolean isSquare() { + return size.x == size.y; + } + + @Override + public boolean isSmall() { + return size.x <= small.x || size.y <= small.y; + } + +} -- 2.30.2