summaryrefslogtreecommitdiff
path: root/src/plugins/android.codeutils/src/com/motorola/studio/android/model/Launcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android.codeutils/src/com/motorola/studio/android/model/Launcher.java')
-rw-r--r--src/plugins/android.codeutils/src/com/motorola/studio/android/model/Launcher.java246
1 files changed, 246 insertions, 0 deletions
diff --git a/src/plugins/android.codeutils/src/com/motorola/studio/android/model/Launcher.java b/src/plugins/android.codeutils/src/com/motorola/studio/android/model/Launcher.java
new file mode 100644
index 0000000..98d5bff
--- /dev/null
+++ b/src/plugins/android.codeutils/src/com/motorola/studio/android/model/Launcher.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.motorola.studio.android.model;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.wizard.IWizardContainer;
+
+import com.motorola.studio.android.codeutils.CodeUtilsActivator;
+import com.motorola.studio.android.common.exception.AndroidException;
+import com.motorola.studio.android.common.log.StudioLogger;
+import com.motorola.studio.android.common.log.UsageDataConstants;
+
+/**
+ * Launcher Controller Model. As part of a MVC architecture, this class should
+ * communicate with the Wizard UI to provide all needed information to create a
+ * functional Launcher Building Block (Activity, Service or Broadcast Receiver).
+ */
+public abstract class Launcher extends BuildingBlockModel
+{
+ private final Set<String> intentFilterCategories = new HashSet<String>();
+
+ private final Set<String> intentFilterActions = new HashSet<String>();
+
+ private final Set<String> intentFilterPermissions = new HashSet<String>();
+
+ /**
+ * Constructor for the Launcher.
+ *
+ * @param superClass
+ * The super class for this Launcher
+ */
+ public Launcher(String superClass)
+ {
+ super(superClass);
+ }
+
+ /**
+ * Creates a Launcher with a Default Intent Filter
+ *
+ * @param superClass
+ * the launcher superclass
+ * @param category
+ * the intent filter category
+ * @param action
+ * the intent filter action
+ */
+ public Launcher(String superClass, String category, String action)
+ {
+ super(superClass);
+ intentFilterCategories.add(category);
+ intentFilterActions.add(action);
+ }
+
+ /**
+ * Adds an Intent Filter Action to this Launcher.
+ *
+ * @param action
+ */
+ public void addIntentFilterAction(String action)
+ {
+ this.intentFilterActions.add(action);
+ }
+
+ /**
+ * Adds an intent filter category to this launcher.
+ *
+ * @param category
+ */
+ public void addIntentFilterCategories(String category)
+ {
+ intentFilterCategories.add(category);
+ }
+
+ /**
+ * Adds an intent filter category to this launcher.
+ *
+ * @param category
+ */
+ @Override
+ public void addIntentFilterPermissions(String permission)
+ {
+ intentFilterPermissions.add(permission);
+ }
+
+ /**
+ * Return all intent filter actions as Array.
+ *
+ * @return
+ */
+ public String[] getIntentFilterActionsAsArray()
+ {
+ return intentFilterActions.toArray(new String[intentFilterActions.size()]);
+ }
+
+ /**
+ * Returns all intent filter actions.
+ *
+ * @return
+ */
+ public Set<String> getIntentFilterActions()
+ {
+ return intentFilterActions;
+ }
+
+ /**
+ * Returns all intent filter categories.
+ *
+ * @return
+ */
+ public Set<String> getIntentFilterCategories()
+ {
+ return intentFilterCategories;
+ }
+
+ /**
+ * Returns all intent filter categories.
+ *
+ * @return
+ */
+ @Override
+ public Set<String> getIntentFilterPermissions()
+ {
+ return intentFilterPermissions;
+ }
+
+ /**
+ * Return all Filter Categories as an Array.
+ *
+ * @return
+ */
+ public String[] getIntentFilterCategoriesAsArray()
+ {
+ return intentFilterCategories.toArray(new String[intentFilterCategories.size()]);
+ }
+
+ /**
+ * Return all Filter Permissions as an Array.
+ *
+ * @return
+ */
+ @Override
+ public String[] getIntentFilterPermissionsAsArray()
+ {
+ return intentFilterPermissions.toArray(new String[intentFilterPermissions.size()]);
+ }
+
+ /**
+ * Remove the Intent filter action.
+ *
+ * @param action
+ */
+ public void removeIntentFilterAction(String action)
+ {
+ intentFilterActions.remove(action);
+ }
+
+ /**
+ * Remove intent filter category.
+ *
+ * @param category
+ */
+ public void removeIntentFilterCategories(String category)
+ {
+ intentFilterCategories.remove(category);
+ }
+
+ /**
+ * Remove intent filter category.
+ *
+ * @param category
+ */
+ @Override
+ public void removeIntentFilterPermissions(String permission)
+ {
+ intentFilterPermissions.remove(permission);
+ }
+
+ /**
+ * Remove all Intent Filters action.
+ */
+ public void removeAllIntentFilterActions()
+ {
+ intentFilterActions.clear();
+ }
+
+ /**
+ * Remove all intent filters categories.
+ */
+ public void removeAllIntentFilterCategories()
+ {
+ intentFilterCategories.clear();
+ }
+
+ /**
+ * Logs to UDC all permissions used
+ */
+ public boolean save(IWizardContainer container, IProgressMonitor monitor)
+ throws AndroidException
+ {
+
+ StringBuffer permissionList = new StringBuffer("Added building block permissions: ");
+ int selectedPermissionsSize = getIntentFilterPermissionsAsArray().length;
+
+ for (int i = 0; i < selectedPermissionsSize; i++)
+ {
+
+ String permission = getIntentFilterPermissionsAsArray()[i];
+ permissionList.append(permission);
+
+ if (i < (selectedPermissionsSize - 1))
+ {
+ permissionList.append(", ");
+ }
+ }
+
+ if (selectedPermissionsSize > 0)
+ {
+
+ // Logs to UDC the permissions selected
+ StudioLogger.collectUsageData(
+ UsageDataConstants.WHAT_BUILDINGBLOCK_PERMISSION, //$NON-NLS-1$
+ UsageDataConstants.KIND_BUILDINGBLOCK_PERMISSION,
+ "permissions: " + permissionList.toString(), //$NON-NLS-1$
+ CodeUtilsActivator.PLUGIN_ID, CodeUtilsActivator.getDefault().getBundle()
+ .getVersion().toString());
+ }
+ return true;
+ }
+
+}