diff options
| author | Matthias Villiger | 2013-03-07 16:10:36 +0000 |
|---|---|---|
| committer | Matthias Villiger | 2013-03-07 16:10:36 +0000 |
| commit | d95f0ec4e930049ff0c54e4f8721bb0ca9a77117 (patch) | |
| tree | 7ab33ee8eac97fe7bd01d697c82914033bc3bea4 | |
| parent | 7b4862d56822874a313ade53a969e409781cdf7d (diff) | |
| download | org.eclipse.scout.sdk-d95f0ec4e930049ff0c54e4f8721bb0ca9a77117.tar.gz org.eclipse.scout.sdk-d95f0ec4e930049ff0c54e4f8721bb0ca9a77117.tar.xz org.eclipse.scout.sdk-d95f0ec4e930049ff0c54e4f8721bb0ca9a77117.zip | |
Support for Scout Mobile UI
https://bugs.eclipse.org/bugs/show_bug.cgi?id=394127
Mobile support added for RAP UI.
25 files changed, 602 insertions, 59 deletions
diff --git a/org.eclipse.scout.sdk.rap/plugin.xml b/org.eclipse.scout.sdk.rap/plugin.xml index a10a29ecf..aef031049 100644 --- a/org.eclipse.scout.sdk.rap/plugin.xml +++ b/org.eclipse.scout.sdk.rap/plugin.xml @@ -9,6 +9,16 @@ referenceId="create.client"> </operation> <operation + class="org.eclipse.scout.sdk.rap.operations.project.CreateMobileClientPluginOperation" + id="create.client.mobile" + referenceId="create.ui.rap"> + </operation> + <operation + class="org.eclipse.scout.sdk.rap.operations.project.RapProductMobileAddOperation" + id="finalize.ui.rap.products.mobile" + referenceId="create.client.mobile"> + </operation> + <operation class="org.eclipse.scout.sdk.rap.operations.project.FillUiRapPluginOperation" id="fill.ui.rap" referenceId="create.ui.rap"> @@ -19,12 +29,12 @@ referenceId="fill.ui.rap"> </operation> <operation - class="org.eclipse.scout.sdk.rap.operations.project.RapProductFileUpgradeOperation" + class="org.eclipse.scout.sdk.rap.operations.project.RapProductJettyUpgradeOperation" id="finalize.ui.rap.products" referenceId="fill.ui.rap"> </operation> <operation - class="org.eclipse.scout.sdk.rap.operations.project.RapProductFileFillOperation" + class="org.eclipse.scout.sdk.rap.operations.project.RapProductEquinoxSecurityInstallOperation" execAfterReference="true" id="fill.ui.rap.product" referenceId="fill.ui.rap"> diff --git a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/CreateMobileClientPluginOperation.java b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/CreateMobileClientPluginOperation.java new file mode 100644 index 000000000..63176e13c --- /dev/null +++ b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/CreateMobileClientPluginOperation.java @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.sdk.rap.operations.project; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Platform; +import org.eclipse.scout.nls.sdk.model.util.Language; +import org.eclipse.scout.nls.sdk.model.workspace.NlsEntry; +import org.eclipse.scout.nls.sdk.model.workspace.project.INlsProject; +import org.eclipse.scout.sdk.ScoutSdkCore; +import org.eclipse.scout.sdk.operation.project.AbstractCreateScoutBundleOperation; +import org.eclipse.scout.sdk.operation.project.CreateSharedPluginOperation; +import org.eclipse.scout.sdk.operation.template.InstallJavaFileOperation; +import org.eclipse.scout.sdk.operation.template.InstallTextFileOperation; +import org.eclipse.scout.sdk.rap.ScoutSdkRap; +import org.eclipse.scout.sdk.util.typecache.IWorkingCopyManager; +import org.eclipse.scout.sdk.workspace.IScoutBundle; +import org.osgi.framework.Bundle; + +public class CreateMobileClientPluginOperation extends AbstractCreateScoutBundleOperation { + + public final static String PROP_MOBILE_BUNDLE_CLIENT_NAME = "BUNDLE_MOBILE_CLIENT_NAME"; + public final static String MOBILE_CLIENT_PROJECT_NAME_SUFFIX = ".client.mobile"; + + @Override + public String getOperationName() { + return "Create Mobile Client Plugin"; + } + + @Override + public boolean isRelevant() { + return isNodeChecked(CreateUiRapPluginOperation.BUNDLE_ID); + } + + @Override + public void init() { + setSymbolicName(getPluginName(MOBILE_CLIENT_PROJECT_NAME_SUFFIX)); + } + + @Override + public void run(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException { + super.run(monitor, workingCopyManager); + IProject project = getCreatedProject(); + getProperties().setProperty(PROP_MOBILE_BUNDLE_CLIENT_NAME, getSymbolicName()); + Bundle uiRapBundle = Platform.getBundle(ScoutSdkRap.PLUGIN_ID); + + new InstallTextFileOperation("templates/client.mobile/META-INF/MANIFEST.MF", "META-INF/MANIFEST.MF", uiRapBundle, project, getStringProperties()).run(monitor, workingCopyManager); + new InstallTextFileOperation("templates/client.mobile/plugin.xml", "plugin.xml", uiRapBundle, project, getStringProperties()).run(monitor, workingCopyManager); + new InstallTextFileOperation("templates/client.mobile/build.properties", "build.properties", uiRapBundle, project, getStringProperties()).run(monitor, workingCopyManager); + + String destPathPref = "src/" + (getCreatedProject().getName().replace('.', '/')) + "/"; + new InstallJavaFileOperation("templates/client.mobile/src/Activator.java", destPathPref + "Activator.java", uiRapBundle, getCreatedProject(), getStringProperties()).run(monitor, workingCopyManager); + new InstallJavaFileOperation("templates/client.mobile/src/ui/desktop/DesktopExtension.java", destPathPref + "ui/desktop/DesktopExtension.java", uiRapBundle, getCreatedProject(), getStringProperties()).run(monitor, workingCopyManager); + new InstallJavaFileOperation("templates/client.mobile/src/ui/desktop/HomeForm.java", destPathPref + "ui/desktop/HomeForm.java", uiRapBundle, getCreatedProject(), getStringProperties()).run(monitor, workingCopyManager); + + // Add texts used by mobile UI + String sharedBundleName = getProperties().getProperty(CreateSharedPluginOperation.PROP_BUNDLE_SHARED_NAME, String.class); + IScoutBundle shared = ScoutSdkCore.getScoutWorkspace().getBundleGraph().getBundle(sharedBundleName); + + INlsProject nlsProject = shared.getNlsProject(); + NlsEntry entry = new NlsEntry("Logoff", nlsProject); + entry.addTranslation(Language.LANGUAGE_DEFAULT, "Log off"); + nlsProject.updateRow(entry, monitor); + } +} diff --git a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/CreateUiRapPluginOperation.java b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/CreateUiRapPluginOperation.java index 0e878fffb..912558fe6 100644 --- a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/CreateUiRapPluginOperation.java +++ b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/CreateUiRapPluginOperation.java @@ -73,6 +73,8 @@ public class CreateUiRapPluginOperation extends AbstractCreateScoutBundleOperati String destPathPref = "src/" + (getCreatedProject().getName().replace('.', '/')) + "/"; new InstallJavaFileOperation("templates/ui.rap/src/Activator.java", destPathPref + "Activator.java", uiRapBundle, getCreatedProject(), getStringProperties()).run(monitor, workingCopyManager); new InstallJavaFileOperation("templates/ui.rap/src/StandaloneRwtEnvironment.java", destPathPref + "StandaloneRwtEnvironment.java", uiRapBundle, getCreatedProject(), getStringProperties()).run(monitor, workingCopyManager); + new InstallJavaFileOperation("templates/ui.rap/src/MobileStandaloneRwtEnvironment.java", destPathPref + "MobileStandaloneRwtEnvironment.java", uiRapBundle, getCreatedProject(), getStringProperties()).run(monitor, workingCopyManager); + new InstallJavaFileOperation("templates/ui.rap/src/TabletStandaloneRwtEnvironment.java", destPathPref + "TabletStandaloneRwtEnvironment.java", uiRapBundle, getCreatedProject(), getStringProperties()).run(monitor, workingCopyManager); // dev product new InstallTextFileOperation("templates/ui.rap/products/development/config.ini", "products/development/config.ini", uiRapBundle, project, getStringProperties()).run(monitor, workingCopyManager); diff --git a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/FillUiRapPluginOperation.java b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/FillUiRapPluginOperation.java index b68bdb31e..1438be71d 100644 --- a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/FillUiRapPluginOperation.java +++ b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/FillUiRapPluginOperation.java @@ -105,7 +105,6 @@ public class FillUiRapPluginOperation extends AbstractScoutProjectNewOperation { // existing local RAP target op.addLocalDirectory(RAP_TARGET_VARIABLE); - op.addLocalDirectory(RAP_TARGET_VARIABLE); // try to detect if the given folder is a complete platform or only contains the rap plugins if (!isPluginAvailable(getLocalTargetFolder(), "org.eclipse.platform_") || !isPluginAvailable(getLocalTargetFolder(), "org.eclipse.help.ui_")) { @@ -142,7 +141,6 @@ public class FillUiRapPluginOperation extends AbstractScoutProjectNewOperation { op.addRunningEclipseEntries(); op.addLocalDirectory(RAP_TARGET_VARIABLE); - op.addLocalDirectory(RAP_TARGET_VARIABLE); } op.validate(); diff --git a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductFileFillOperation.java b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductEquinoxSecurityInstallOperation.java index 3c8e1e443..8872f2c23 100644 --- a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductFileFillOperation.java +++ b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductEquinoxSecurityInstallOperation.java @@ -16,12 +16,12 @@ import org.eclipse.core.resources.IFile; import org.eclipse.scout.sdk.operation.project.AbstractEquinoxSecurityInstallOperation; /** - * <h3>{@link RapProductFileFillOperation}</h3> ... + * <h3>{@link RapProductEquinoxSecurityInstallOperation}</h3> ... * * @author mvi * @since 3.8.0 10.12.2012 */ -public class RapProductFileFillOperation extends AbstractEquinoxSecurityInstallOperation { +public class RapProductEquinoxSecurityInstallOperation extends AbstractEquinoxSecurityInstallOperation { @Override public boolean isRelevant() { diff --git a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductFileUpgradeOperation.java b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductJettyUpgradeOperation.java index 5dda13774..2b3ead53a 100644 --- a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductFileUpgradeOperation.java +++ b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductJettyUpgradeOperation.java @@ -10,7 +10,7 @@ import org.eclipse.scout.sdk.operation.project.AbstractScoutProjectNewOperation; import org.eclipse.scout.sdk.operation.util.JettyProductFileUpgradeOperation; import org.eclipse.scout.sdk.util.typecache.IWorkingCopyManager; -public class RapProductFileUpgradeOperation extends AbstractScoutProjectNewOperation { +public class RapProductJettyUpgradeOperation extends AbstractScoutProjectNewOperation { private IFile[] m_rapProdFiles; diff --git a/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductMobileAddOperation.java b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductMobileAddOperation.java new file mode 100644 index 000000000..991138798 --- /dev/null +++ b/org.eclipse.scout.sdk.rap/src/org/eclipse/scout/sdk/rap/operations/project/RapProductMobileAddOperation.java @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright (c) 2010 BSI Business Systems Integration AG. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * BSI Business Systems Integration AG - initial API and implementation + ******************************************************************************/ +package org.eclipse.scout.sdk.rap.operations.project; + +import java.util.ArrayList; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.scout.sdk.operation.project.AbstractScoutProjectNewOperation; +import org.eclipse.scout.sdk.util.pde.ProductFileModelHelper; +import org.eclipse.scout.sdk.util.typecache.IWorkingCopyManager; + +/** + * <h3>{@link RapProductMobileAddOperation}</h3> ... + * + * @author mvi + * @since 3.9.0 07.03.2013 + */ +public class RapProductMobileAddOperation extends AbstractScoutProjectNewOperation { + + private final ArrayList<IFile> m_productFiles = new ArrayList<IFile>(2); + + @Override + public boolean isRelevant() { + return isNodeChecked(CreateUiRapPluginOperation.BUNDLE_ID); + } + + @Override + public void init() { + IFile dev = getProperties().getProperty(CreateUiRapPluginOperation.PROP_PRODUCT_FILE_DEV, IFile.class); + if (dev != null) { + m_productFiles.add(dev); + } + IFile prod = getProperties().getProperty(CreateUiRapPluginOperation.PROP_PRODUCT_FILE_PROD, IFile.class); + if (prod != null) { + m_productFiles.add(prod); + } + } + + @Override + public String getOperationName() { + return "Add Mobile Client to RAP Products"; + } + + @Override + public void run(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException, IllegalArgumentException { + String mobileClientName = getProperties().getProperty(CreateMobileClientPluginOperation.PROP_MOBILE_BUNDLE_CLIENT_NAME, String.class); + for (IFile f : m_productFiles) { + ProductFileModelHelper pfmh = new ProductFileModelHelper(f); + pfmh.ProductFile.addDependency(mobileClientName); + pfmh.save(); + } + } + +} diff --git a/org.eclipse.scout.sdk.rap/templates/client.mobile/META-INF/MANIFEST.MF b/org.eclipse.scout.sdk.rap/templates/client.mobile/META-INF/MANIFEST.MF new file mode 100644 index 000000000..3965d2160 --- /dev/null +++ b/org.eclipse.scout.sdk.rap/templates/client.mobile/META-INF/MANIFEST.MF @@ -0,0 +1,18 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Client Mobile +Bundle-SymbolicName: @@BUNDLE_MOBILE_CLIENT_NAME@@;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Activator: @@BUNDLE_MOBILE_CLIENT_NAME@@.Activator +Bundle-Vendor: Eclipse Scout Project +Require-Bundle: org.eclipse.core.runtime, + @@BUNDLE_CLIENT_NAME@@, + @@BUNDLE_SHARED_NAME@@, + org.eclipse.scout.rt.client.mobile, + org.eclipse.scout.rt.extension.client, + org.eclipse.scout.rt.client.mobile, + org.eclipse.scout.svg.client +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Bundle-ActivationPolicy: lazy +Export-Package: @@BUNDLE_MOBILE_CLIENT_NAME@@, + @@BUNDLE_MOBILE_CLIENT_NAME@@.ui.desktop diff --git a/org.eclipse.scout.sdk.rap/templates/client.mobile/build.properties b/org.eclipse.scout.sdk.rap/templates/client.mobile/build.properties new file mode 100644 index 000000000..6f20375d6 --- /dev/null +++ b/org.eclipse.scout.sdk.rap/templates/client.mobile/build.properties @@ -0,0 +1,5 @@ +source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/org.eclipse.scout.sdk.rap/templates/client.mobile/plugin.xml b/org.eclipse.scout.sdk.rap/templates/client.mobile/plugin.xml new file mode 100644 index 000000000..9f70ca1dc --- /dev/null +++ b/org.eclipse.scout.sdk.rap/templates/client.mobile/plugin.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.scout.rt.extension.client.desktopExtensions">
+ <desktopExtension
+ active="true"
+ class="@@BUNDLE_MOBILE_CLIENT_NAME@@.ui.desktop.DesktopExtension">
+ </desktopExtension>
+ <desktopExtension
+ active="true"
+ class="org.eclipse.scout.rt.client.mobile.ui.desktop.DeviceTransformationDesktopExtension">
+ </desktopExtension>
+ </extension>
+</plugin>
diff --git a/org.eclipse.scout.sdk.rap/templates/client.mobile/src/Activator.java b/org.eclipse.scout.sdk.rap/templates/client.mobile/src/Activator.java new file mode 100644 index 000000000..996ac89f7 --- /dev/null +++ b/org.eclipse.scout.sdk.rap/templates/client.mobile/src/Activator.java @@ -0,0 +1,23 @@ +package @@BUNDLE_MOBILE_CLIENT_NAME@@;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ private static BundleContext context;
+
+ public static BundleContext getContext() {
+ return context;
+ }
+
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.context = bundleContext;
+ }
+
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ Activator.context = null;
+ }
+}
diff --git a/org.eclipse.scout.sdk.rap/templates/client.mobile/src/ui/desktop/DesktopExtension.java b/org.eclipse.scout.sdk.rap/templates/client.mobile/src/ui/desktop/DesktopExtension.java new file mode 100644 index 000000000..dd31fbd5b --- /dev/null +++ b/org.eclipse.scout.sdk.rap/templates/client.mobile/src/ui/desktop/DesktopExtension.java @@ -0,0 +1,52 @@ +package @@BUNDLE_MOBILE_CLIENT_NAME@@.ui.desktop; + +import org.eclipse.scout.commons.exception.ProcessingException; +import org.eclipse.scout.rt.client.ui.desktop.AbstractDesktopExtension; +import org.eclipse.scout.rt.client.ui.desktop.ContributionCommand; +import org.eclipse.scout.rt.shared.ui.UserAgentUtility; +import org.eclipse.scout.service.SERVICES; + +public class DesktopExtension extends AbstractDesktopExtension { + + private HomeForm m_homeForm; + private boolean m_active; + + public DesktopExtension() { + setActive(!UserAgentUtility.isDesktopDevice()); + } + + @Override + protected ContributionCommand execGuiAttached() throws ProcessingException { + if (!isActive()) { + return super.execGuiAttached(); + } + + if (m_homeForm == null) { + m_homeForm = new HomeForm(); + m_homeForm.startView(); + } + + return ContributionCommand.Continue; + } + + @Override + protected ContributionCommand execGuiDetached() throws ProcessingException { + if (!isActive()) { + return super.execGuiDetached(); + } + + if (m_homeForm != null) { + m_homeForm.doClose(); + } + + return ContributionCommand.Continue; + } + + public boolean isActive() { + return m_active; + } + + public void setActive(boolean active) { + m_active = active; + } +} diff --git a/org.eclipse.scout.sdk.rap/templates/client.mobile/src/ui/desktop/HomeForm.java b/org.eclipse.scout.sdk.rap/templates/client.mobile/src/ui/desktop/HomeForm.java new file mode 100644 index 000000000..cfa29d198 --- /dev/null +++ b/org.eclipse.scout.sdk.rap/templates/client.mobile/src/ui/desktop/HomeForm.java @@ -0,0 +1,212 @@ +package @@BUNDLE_MOBILE_CLIENT_NAME@@.ui.desktop;
+
+import org.eclipse.scout.commons.annotations.Order;
+import org.eclipse.scout.commons.exception.ProcessingException;
+import org.eclipse.scout.rt.client.ClientJob;
+import org.eclipse.scout.rt.client.mobile.transformation.IDeviceTransformationService;
+import org.eclipse.scout.rt.client.mobile.transformation.MobileDeviceTransformation;
+import org.eclipse.scout.rt.client.mobile.ui.basic.table.AbstractMobileTable;
+import org.eclipse.scout.rt.client.mobile.ui.desktop.MobileDesktopUtility;
+import org.eclipse.scout.rt.client.mobile.ui.form.AbstractMobileForm;
+import org.eclipse.scout.rt.client.mobile.ui.form.outline.IOutlineChooserForm;
+import org.eclipse.scout.rt.client.ui.basic.table.ITableRow;
+import org.eclipse.scout.rt.client.ui.basic.table.columns.AbstractColumn;
+import org.eclipse.scout.rt.client.ui.basic.table.columns.AbstractStringColumn;
+import org.eclipse.scout.rt.client.ui.desktop.outline.IOutline;
+import org.eclipse.scout.rt.client.ui.form.AbstractFormHandler;
+import org.eclipse.scout.rt.client.ui.form.fields.button.AbstractButton;
+import org.eclipse.scout.rt.client.ui.form.fields.groupbox.AbstractGroupBox;
+import org.eclipse.scout.rt.client.ui.form.fields.tablefield.AbstractTableField;
+import org.eclipse.scout.rt.shared.AbstractIcons;
+import org.eclipse.scout.rt.shared.TEXTS;
+import org.eclipse.scout.service.SERVICES;
+
+import com.bsiag.crm.client.mobile.ui.desktop.HomeForm.MainBox.OutlinesTableField;
+
+public class HomeForm extends AbstractMobileForm implements IOutlineChooserForm {
+
+ public HomeForm() throws ProcessingException {
+ super();
+ }
+
+ @Override
+ protected boolean getConfiguredAskIfNeedSave() {
+ return false;
+ }
+
+ @Override
+ protected int getConfiguredDisplayHint() {
+ return DISPLAY_HINT_VIEW;
+ }
+
+ @Override
+ protected String getConfiguredDisplayViewId() {
+ return VIEW_ID_CENTER;
+ }
+
+ @Override
+ protected String getConfiguredTitle() {
+ return TEXTS.get("MobileOutlineChooserTitle");
+ }
+
+ public void startView() throws ProcessingException {
+ startInternal(new ViewHandler());
+ }
+
+ public MainBox getMainBox() {
+ return (MainBox) getRootGroupBox();
+ }
+
+ public OutlinesTableField getOutlinesTableField() {
+ return getFieldByClass(OutlinesTableField.class);
+ }
+
+ @Override
+ protected boolean getConfiguredFooterVisible() {
+ return true;
+ }
+
+ @Order(10.0)
+ public class MainBox extends AbstractGroupBox {
+
+ @Override
+ protected boolean getConfiguredBorderVisible() {
+ return false;
+ }
+
+ @Override
+ protected void execInitField() throws ProcessingException {
+ //Table already is scrollable, it's not necessary to make the form scrollable too
+ IDeviceTransformationService service = SERVICES.getService(IDeviceTransformationService.class);
+ if (service != null && service.getDeviceTransformer() != null) {
+ service.getDeviceTransformer().getDeviceTransformationExcluder().excludeFieldTransformation(this, MobileDeviceTransformation.MAKE_MAINBOX_SCROLLABLE);
+ }
+ }
+
+ @Order(10.0)
+ public class OutlinesTableField extends AbstractTableField<OutlinesTableField.Table> {
+
+ @Override
+ protected boolean getConfiguredLabelVisible() {
+ return false;
+ }
+
+ @Override
+ protected int getConfiguredGridH() {
+ return 2;
+ }
+
+ @Order(10.0)
+ public class Table extends AbstractMobileTable {
+
+ @Override
+ protected boolean execIsAutoCreateTableRowForm() {
+ return false;
+ }
+
+ @Override
+ protected boolean getConfiguredAutoDiscardOnDelete() {
+ return true;
+ }
+
+ @Override
+ protected String getConfiguredDefaultIconId() {
+ return AbstractIcons.TreeNode;
+ }
+
+ @Override
+ protected boolean getConfiguredAutoResizeColumns() {
+ return true;
+ }
+
+ @Override
+ protected boolean getConfiguredSortEnabled() {
+ return false;
+ }
+
+ public LabelColumn getLableColumn() {
+ return getColumnSet().getColumnByClass(LabelColumn.class);
+ }
+
+ public OutlineColumn getOutlineColumn() {
+ return getColumnSet().getColumnByClass(OutlineColumn.class);
+ }
+
+ @Override
+ protected void execDecorateRow(ITableRow row) throws ProcessingException {
+ final String outlineIcon = getOutlineColumn().getValue(row).getIconId();
+ if (outlineIcon != null) {
+ row.setIconId(outlineIcon);
+ }
+ }
+
+ @Order(10.0)
+ public class OutlineColumn extends AbstractColumn<IOutline> {
+
+ @Override
+ protected boolean getConfiguredDisplayable() {
+ return false;
+ }
+ }
+
+ @Order(20.0)
+ public class LabelColumn extends AbstractStringColumn {
+
+ }
+
+ @Override
+ protected void execRowsSelected(ITableRow[] rows) throws ProcessingException {
+ if (rows == null || rows.length == 0) {
+ return;
+ }
+
+ IOutline outline = getOutlineColumn().getValue(rows[0]);
+
+ MobileDesktopUtility.activateOutline(outline);
+ getDesktop().removeForm(HomeForm.this);
+
+ clearSelectionDelayed();
+ }
+ }
+ }
+
+ @Order(20.0)
+ public class LogoutButton extends AbstractButton {
+
+ @Override
+ protected String getConfiguredLabel() {
+ return TEXTS.get("Logoff");
+ }
+
+ @Override
+ protected void execClickAction() throws ProcessingException {
+ ClientJob.getCurrentSession().stopSession();
+ }
+
+ }
+ }
+
+ @Order(10.0)
+ public class ViewHandler extends AbstractFormHandler {
+
+ @Override
+ protected void execLoad() throws ProcessingException {
+ final OutlinesTableField.Table table = getOutlinesTableField().getTable();
+
+ IOutline[] outlines = getDesktop().getAvailableOutlines();
+ for (IOutline outline : outlines) {
+ if (outline.isVisible() && outline.getRootNode() != null) {
+ ITableRow row = table.createRow(new Object[]{outline, outline.getTitle()});
+ row.setEnabled(outline.isEnabled());
+ table.addRow(row);
+ }
+ }
+ }
+
+ @Override
+ protected void execFinally() throws ProcessingException {
+ final OutlinesTableField.Table table = getOutlinesTableField().getTable();
+ table.discardAllRows();
+ }
+ }
+}
diff --git a/org.eclipse.scout.sdk.rap/templates/ui.rap/META-INF/MANIFEST.MF b/org.eclipse.scout.sdk.rap/templates/ui.rap/META-INF/MANIFEST.MF index fc3057462..af5697ffb 100644 --- a/org.eclipse.scout.sdk.rap/templates/ui.rap/META-INF/MANIFEST.MF +++ b/org.eclipse.scout.sdk.rap/templates/ui.rap/META-INF/MANIFEST.MF @@ -11,7 +11,10 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.scout.rt.ui.rap, org.eclipse.scout.net, org.eclipse.equinox.http.registry, - org.eclipse.scout.http.servletfilter + org.eclipse.scout.http.servletfilter, + org.eclipse.scout.rt.ui.rap.mobile, + org.eclipse.scout.rt.ui.rap.theme.rayo, + org.eclipse.scout.rt.client.mobile Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Scout-Project: org.eclipse.scout.rt diff --git a/org.eclipse.scout.sdk.rap/templates/ui.rap/plugin.xml b/org.eclipse.scout.sdk.rap/templates/ui.rap/plugin.xml index 22d37a956..28096c52a 100644 --- a/org.eclipse.scout.sdk.rap/templates/ui.rap/plugin.xml +++ b/org.eclipse.scout.sdk.rap/templates/ui.rap/plugin.xml @@ -16,8 +16,7 @@ <run class="org.eclipse.scout.rt.ui.rap.RwtApplication"/> </application> </extension> - <extension - point="org.eclipse.scout.rt.ui.rap.lookAndFeel"> + <extension point="org.eclipse.scout.rt.ui.rap.lookAndFeel"> <decorations scope="global"> <mandatory> @@ -34,24 +33,54 @@ </property> </properties> </extension> - <extension - point="org.eclipse.rap.ui.entrypoint"> + <extension point="org.eclipse.rap.ui.entrypoint"> <entrypoint class="@@BUNDLE_RAP_NAME@@.StandaloneRwtEnvironment" id="@@BUNDLE_RAP_NAME@@.web" brandingId="@@BUNDLE_RAP_NAME@@.branding.web" path="/web"/> + <entrypoint + class="@@BUNDLE_RAP_NAME@@.MobileStandaloneRwtEnvironment" + id="@@BUNDLE_RAP_NAME@@.mobile" + brandingId="@@BUNDLE_RAP_NAME@@.branding.mobile" + path="/mobile"/> + <entrypoint + class="@@BUNDLE_RAP_NAME@@.TabletStandaloneRwtEnvironment" + id="@@BUNDLE_RAP_NAME@@.tablet" + brandingId="@@BUNDLE_RAP_NAME@@.branding.tablet" + path="/tablet"/> </extension> - <extension - point="org.eclipse.rap.ui.branding"> + <extension point="org.eclipse.rap.ui.branding"> + <branding + body="web-resources/startup-body.html" + favicon="web-resources/eclipseScout.gif" + id="@@BUNDLE_RAP_NAME@@.branding.web" + themeId="org.eclipse.scout.rt.ui.rap.theme" + title="@@ALIAS@@"> + <additionalHeaders> + <link href="res/html-styles.css" rel="stylesheet"/> + </additionalHeaders> + </branding> <branding - body="web-resources/startup-body.html" - favicon="web-resources/eclipseScout.gif" - id="@@BUNDLE_RAP_NAME@@.branding.web" - themeId="org.eclipse.scout.rt.ui.rap.theme" - title="@@ALIAS@@"> + body="web-resources/startup-body.html" + favicon="web-resources/eclipseScout.gif" + id="@@BUNDLE_RAP_NAME@@.branding.mobile" + themeId="org.eclipse.scout.rt.ui.rap.mobile.theme" + title="@@ALIAS@@"> <additionalHeaders> <link href="res/html-styles.css" rel="stylesheet"/> + <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"></meta> + </additionalHeaders> + </branding> + <branding + body="web-resources/startup-body.html" + favicon="web-resources/eclipseScout.gif" + id="@@BUNDLE_RAP_NAME@@.branding.tablet" + themeId="org.eclipse.scout.rt.ui.rap.mobile.theme" + title="@@ALIAS@@"> + <additionalHeaders> + <link href="res/html-styles.css" rel="stylesheet"/> + <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"></meta> </additionalHeaders> </branding> </extension> @@ -61,8 +90,7 @@ <extension point="org.eclipse.equinox.http.registry.resources"> <resource alias="/res" base-name="/web-resources"/> </extension> - <extension - point="org.eclipse.scout.http.servletfilter.filters"> + <extension point="org.eclipse.scout.http.servletfilter.filters"> <filter aliases="/" class="org.eclipse.scout.http.servletfilter.security.AnonymousSecurityFilter" @@ -74,4 +102,16 @@ ranking="20"> </filter> </extension> + <extension point="org.eclipse.scout.rt.extension.client.desktopExtensions"> + <desktopExtension + active="true" + class="org.eclipse.scout.rt.client.mobile.ui.desktop.DeviceTransformationDesktopExtension"> + </desktopExtension> + </extension> + <extension point="org.eclipse.equinox.http.registry.servlets"> + <servlet + alias="/" + class="org.eclipse.scout.rt.ui.rap.mobile.servlets.DeviceDispatcherServlet"> + </servlet> + </extension> </plugin> diff --git a/org.eclipse.scout.sdk.rap/templates/ui.rap/products/development/app-rap-dev.product b/org.eclipse.scout.sdk.rap/templates/ui.rap/products/development/app-rap-dev.product index 6877d1bd8..68d37c108 100644 --- a/org.eclipse.scout.sdk.rap/templates/ui.rap/products/development/app-rap-dev.product +++ b/org.eclipse.scout.sdk.rap/templates/ui.rap/products/development/app-rap-dev.product @@ -30,9 +30,9 @@ </vm> <plugins> - <plugin id="@@BUNDLE_CLIENT_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_RAP_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SHARED_NAME@@" fragment=""/> + <plugin id="@@BUNDLE_CLIENT_NAME@@"/> + <plugin id="@@BUNDLE_RAP_NAME@@"/> + <plugin id="@@BUNDLE_SHARED_NAME@@"/> <plugin id="com.ibm.icu"/> <plugin id="javax.servlet"/> <plugin id="javax.xml"/> @@ -73,13 +73,13 @@ <plugin id="org.eclipse.help"/> <plugin id="org.eclipse.osgi"/> <plugin id="org.eclipse.osgi.services"/> - <plugin id="org.eclipse.rap.jface" fragment=""/> - <plugin id="org.eclipse.rap.jface.databinding" fragment=""/> - <plugin id="org.eclipse.rap.rwt" fragment=""/> - <plugin id="org.eclipse.rap.rwt.osgi" fragment=""/> - <plugin id="org.eclipse.rap.ui" fragment=""/> - <plugin id="org.eclipse.rap.ui.forms" fragment=""/> - <plugin id="org.eclipse.rap.ui.workbench" fragment=""/> + <plugin id="org.eclipse.rap.jface"/> + <plugin id="org.eclipse.rap.jface.databinding"/> + <plugin id="org.eclipse.rap.rwt"/> + <plugin id="org.eclipse.rap.rwt.osgi"/> + <plugin id="org.eclipse.rap.ui"/> + <plugin id="org.eclipse.rap.ui.forms"/> + <plugin id="org.eclipse.rap.ui.workbench"/> <plugin id="org.eclipse.scout.commons"/> <plugin id="org.eclipse.scout.http.servletfilter"/> <plugin id="org.eclipse.scout.net"/> @@ -98,6 +98,9 @@ <plugin id="org.w3c.css.sac"/> <plugin id="org.w3c.dom.smil"/> <plugin id="org.w3c.dom.svg"/> + <plugin id="org.eclipse.scout.rt.client.mobile"/> + <plugin id="org.eclipse.scout.rt.ui.rap.mobile"/> + <plugin id="org.eclipse.scout.rt.ui.rap.theme.rayo.mobile" fragment="true"/> </plugins> diff --git a/org.eclipse.scout.sdk.rap/templates/ui.rap/products/production/app-rap.product b/org.eclipse.scout.sdk.rap/templates/ui.rap/products/production/app-rap.product index ec299a464..a51bbb28a 100644 --- a/org.eclipse.scout.sdk.rap/templates/ui.rap/products/production/app-rap.product +++ b/org.eclipse.scout.sdk.rap/templates/ui.rap/products/production/app-rap.product @@ -30,9 +30,9 @@ </vm> <plugins> - <plugin id="@@BUNDLE_CLIENT_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_RAP_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SHARED_NAME@@" fragment=""/> + <plugin id="@@BUNDLE_CLIENT_NAME@@"/> + <plugin id="@@BUNDLE_RAP_NAME@@"/> + <plugin id="@@BUNDLE_SHARED_NAME@@"/> <plugin id="com.ibm.icu"/> <plugin id="javax.xml"/> <plugin id="org.apache.batik.bridge"/> @@ -73,13 +73,13 @@ <plugin id="org.eclipse.help"/> <plugin id="org.eclipse.osgi"/> <plugin id="org.eclipse.osgi.services"/> - <plugin id="org.eclipse.rap.jface" fragment=""/> - <plugin id="org.eclipse.rap.jface.databinding" fragment=""/> - <plugin id="org.eclipse.rap.rwt" fragment=""/> - <plugin id="org.eclipse.rap.rwt.osgi" fragment=""/> - <plugin id="org.eclipse.rap.ui" fragment=""/> - <plugin id="org.eclipse.rap.ui.forms" fragment=""/> - <plugin id="org.eclipse.rap.ui.workbench" fragment=""/> + <plugin id="org.eclipse.rap.jface"/> + <plugin id="org.eclipse.rap.jface.databinding"/> + <plugin id="org.eclipse.rap.rwt"/> + <plugin id="org.eclipse.rap.rwt.osgi"/> + <plugin id="org.eclipse.rap.ui"/> + <plugin id="org.eclipse.rap.ui.forms"/> + <plugin id="org.eclipse.rap.ui.workbench"/> <plugin id="org.eclipse.scout.commons"/> <plugin id="org.eclipse.scout.http.servletfilter"/> <plugin id="org.eclipse.scout.net"/> @@ -96,7 +96,8 @@ <plugin id="org.w3c.css.sac"/> <plugin id="org.w3c.dom.smil"/> <plugin id="org.w3c.dom.svg"/> + <plugin id="org.eclipse.scout.rt.client.mobile"/> + <plugin id="org.eclipse.scout.rt.ui.rap.mobile"/> + <plugin id="org.eclipse.scout.rt.ui.rap.theme.rayo.mobile" fragment="true"/> </plugins> - - </product> diff --git a/org.eclipse.scout.sdk.rap/templates/ui.rap/src/MobileStandaloneRwtEnvironment.java b/org.eclipse.scout.sdk.rap/templates/ui.rap/src/MobileStandaloneRwtEnvironment.java new file mode 100644 index 000000000..2a52bb22c --- /dev/null +++ b/org.eclipse.scout.sdk.rap/templates/ui.rap/src/MobileStandaloneRwtEnvironment.java @@ -0,0 +1,11 @@ +package @@BUNDLE_RAP_NAME@@;
+
+import @@BUNDLE_CLIENT_NAME@@.ClientSession;
+import org.eclipse.scout.rt.ui.rap.mobile.AbstractMobileStandaloneRwtEnvironment;
+
+public class MobileStandaloneRwtEnvironment extends AbstractMobileStandaloneRwtEnvironment {
+
+ public MobileStandaloneRwtEnvironment() {
+ super(Activator.getDefault().getBundle(), ClientSession.class);
+ }
+}
diff --git a/org.eclipse.scout.sdk.rap/templates/ui.rap/src/TabletStandaloneRwtEnvironment.java b/org.eclipse.scout.sdk.rap/templates/ui.rap/src/TabletStandaloneRwtEnvironment.java new file mode 100644 index 000000000..5d47f527c --- /dev/null +++ b/org.eclipse.scout.sdk.rap/templates/ui.rap/src/TabletStandaloneRwtEnvironment.java @@ -0,0 +1,11 @@ +package @@BUNDLE_RAP_NAME@@;
+
+import @@BUNDLE_CLIENT_NAME@@.ClientSession;
+import org.eclipse.scout.rt.ui.rap.mobile.AbstractTabletStandaloneRwtEnvironment;
+
+public class TabletStandaloneRwtEnvironment extends AbstractTabletStandaloneRwtEnvironment {
+
+ public TabletStandaloneRwtEnvironment() {
+ super(Activator.getDefault().getBundle(), ClientSession.class);
+ }
+}
diff --git a/org.eclipse.scout.sdk/templates/server/products/development/app-server-dev.product b/org.eclipse.scout.sdk/templates/server/products/development/app-server-dev.product index 537ae4902..262d0e9ff 100644 --- a/org.eclipse.scout.sdk/templates/server/products/development/app-server-dev.product +++ b/org.eclipse.scout.sdk/templates/server/products/development/app-server-dev.product @@ -28,8 +28,8 @@ </vm> <plugins> - <plugin id="@@BUNDLE_SERVER_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SHARED_NAME@@" fragment=""/> + <plugin id="@@BUNDLE_SERVER_NAME@@"/> + <plugin id="@@BUNDLE_SHARED_NAME@@"/> <plugin id="javax.xml"/> <plugin id="javax.servlet"/> <plugin id="org.apache.commons.codec"/> diff --git a/org.eclipse.scout.sdk/templates/server/products/production/app-server.product b/org.eclipse.scout.sdk/templates/server/products/production/app-server.product index 7b6b8eea6..ac010cdcb 100644 --- a/org.eclipse.scout.sdk/templates/server/products/production/app-server.product +++ b/org.eclipse.scout.sdk/templates/server/products/production/app-server.product @@ -29,8 +29,8 @@ </vm> <plugins> - <plugin id="@@BUNDLE_SERVER_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SHARED_NAME@@" fragment=""/> + <plugin id="@@BUNDLE_SERVER_NAME@@"/> + <plugin id="@@BUNDLE_SHARED_NAME@@"/> <plugin id="javax.xml"/> <plugin id="javax.servlet"/> <plugin id="org.apache.commons.codec"/> diff --git a/org.eclipse.scout.sdk/templates/ui.swing/products/development/app-client-dev.product b/org.eclipse.scout.sdk/templates/ui.swing/products/development/app-client-dev.product index 319f891cf..6f6f70d74 100644 --- a/org.eclipse.scout.sdk/templates/ui.swing/products/development/app-client-dev.product +++ b/org.eclipse.scout.sdk/templates/ui.swing/products/development/app-client-dev.product @@ -27,9 +27,9 @@ </vm> <plugins> - <plugin id="@@BUNDLE_CLIENT_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SHARED_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SWING_NAME@@" fragment=""/> + <plugin id="@@BUNDLE_CLIENT_NAME@@"/> + <plugin id="@@BUNDLE_SHARED_NAME@@"/> + <plugin id="@@BUNDLE_SWING_NAME@@"/> <plugin id="javax.xml"/> <plugin id="org.eclipse.core.contenttype"/> <plugin id="org.eclipse.core.jobs"/> diff --git a/org.eclipse.scout.sdk/templates/ui.swing/products/production/app-client.product b/org.eclipse.scout.sdk/templates/ui.swing/products/production/app-client.product index fa09d9647..2f38a2846 100644 --- a/org.eclipse.scout.sdk/templates/ui.swing/products/production/app-client.product +++ b/org.eclipse.scout.sdk/templates/ui.swing/products/production/app-client.product @@ -27,9 +27,9 @@ </vm> <plugins> - <plugin id="@@BUNDLE_CLIENT_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SHARED_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SWING_NAME@@" fragment=""/> + <plugin id="@@BUNDLE_CLIENT_NAME@@"/> + <plugin id="@@BUNDLE_SHARED_NAME@@"/> + <plugin id="@@BUNDLE_SWING_NAME@@"/> <plugin id="javax.xml"/> <plugin id="org.eclipse.core.contenttype"/> <plugin id="org.eclipse.core.jobs"/> diff --git a/org.eclipse.scout.sdk/templates/ui.swt/products/development/app-client-dev.product b/org.eclipse.scout.sdk/templates/ui.swt/products/development/app-client-dev.product index 803ec6daf..3c398e96d 100644 --- a/org.eclipse.scout.sdk/templates/ui.swt/products/development/app-client-dev.product +++ b/org.eclipse.scout.sdk/templates/ui.swt/products/development/app-client-dev.product @@ -27,9 +27,9 @@ </vm> <plugins> - <plugin id="@@BUNDLE_CLIENT_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SHARED_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SWT_NAME@@" fragment=""/> + <plugin id="@@BUNDLE_CLIENT_NAME@@"/> + <plugin id="@@BUNDLE_SHARED_NAME@@"/> + <plugin id="@@BUNDLE_SWT_NAME@@"/> <plugin id="com.ibm.icu"/> <plugin id="org.eclipse.compare.core"/> <plugin id="org.eclipse.core.commands"/> diff --git a/org.eclipse.scout.sdk/templates/ui.swt/products/production/app-client.product b/org.eclipse.scout.sdk/templates/ui.swt/products/production/app-client.product index f27296be0..49d56383a 100644 --- a/org.eclipse.scout.sdk/templates/ui.swt/products/production/app-client.product +++ b/org.eclipse.scout.sdk/templates/ui.swt/products/production/app-client.product @@ -27,9 +27,9 @@ </vm> <plugins> - <plugin id="@@BUNDLE_CLIENT_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SHARED_NAME@@" fragment=""/> - <plugin id="@@BUNDLE_SWT_NAME@@" fragment=""/> + <plugin id="@@BUNDLE_CLIENT_NAME@@"/> + <plugin id="@@BUNDLE_SHARED_NAME@@"/> + <plugin id="@@BUNDLE_SWT_NAME@@"/> <plugin id="com.ibm.icu"/> <plugin id="org.eclipse.compare.core"/> <plugin id="org.eclipse.core.commands"/> |
