diff options
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.java | 246 |
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; + } + +} |