Introduce UX context
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 26 Oct 2015 18:39:50 +0000 (18:39 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 26 Oct 2015 18:39:50 +0000 (18:39 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8528 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java
org.argeo.cms/src/org/argeo/cms/CmsView.java
org.argeo.cms/src/org/argeo/cms/ui/UxContext.java [new file with mode: 0644]
org.argeo.cms/src/org/argeo/cms/util/LoginEntryPoint.java
org.argeo.cms/src/org/argeo/cms/util/SimpleErgonomics.java
org.argeo.cms/src/org/argeo/cms/util/SimpleUxContext.java [new file with mode: 0644]

index d27ed006e6f282065264a4c2b57fa13db510b1dc..c101c021f134bc36602a0dc93b1a6da661ac4039 100644 (file)
@@ -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;
index 0ff1211b7d6a436d9bdad5e007bc61f65af5c5c7..8b56c137b99cab9ac35b0c64cdb3d419a4659c27 100644 (file)
@@ -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 (file)
index 0000000..f03b88b
--- /dev/null
@@ -0,0 +1,9 @@
+package org.argeo.cms.ui;
+
+public interface UxContext {
+       boolean isPortrait();
+       boolean isLandscape();
+       boolean isSquare();
+       
+       boolean isSmall();
+}
index 4ccedd19bb2a5180873b481a188a439361018f2c..abe67040643bfc96184fbff65572d446671dee17 100644 (file)
@@ -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;
+       }
+
 }
index d89d54d7c43d7bda782b3f884297776727c82f51..2555cade56338141a39b6d142acedf39cf5c9b89 100644 (file)
@@ -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<String, String> 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 (file)
index 0000000..ac2ea7c
--- /dev/null
@@ -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;
+       }
+
+}