| /* |
| * 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.wizards.buildingblocks; |
| |
| import java.util.Comparator; |
| import java.util.Set; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.jface.dialogs.IDialogSettings; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog; |
| |
| import com.motorola.studio.android.codeutils.CodeUtilsActivator; |
| |
| /** |
| * Class that implements a filter dialog to be used by NewLauncherWizardPage class |
| */ |
| class FilteredActionsSelectionDialog extends FilteredItemsSelectionDialog |
| { |
| private final Set<String> categorySet; |
| |
| public FilteredActionsSelectionDialog(Shell shell, Set<String> categorySet) |
| { |
| super(shell, true); |
| this.categorySet = categorySet; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) |
| */ |
| @Override |
| protected Control createExtendedContentArea(Composite parent) |
| { |
| return null; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter() |
| */ |
| @Override |
| protected ItemsFilter createFilter() |
| { |
| return new ItemsFilter() |
| { |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.ItemsFilter#isConsistentItem(java.lang.Object) |
| */ |
| @Override |
| public boolean isConsistentItem(Object item) |
| { |
| return true; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.ItemsFilter#matchItem(java.lang.Object) |
| */ |
| @Override |
| public boolean matchItem(Object item) |
| { |
| if (!(item instanceof String)) |
| { |
| return false; |
| } |
| return matches((String) item); |
| } |
| |
| }; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#fillContentProvider(org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.AbstractContentProvider, org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.ItemsFilter, org.eclipse.core.runtime.IProgressMonitor) |
| */ |
| @Override |
| protected void fillContentProvider(AbstractContentProvider contentProvider, |
| ItemsFilter itemsFilter, IProgressMonitor progressMonitor) throws CoreException |
| { |
| for (String action : categorySet) |
| { |
| contentProvider.add(action, itemsFilter); |
| } |
| |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getDialogSettings() |
| */ |
| @Override |
| protected IDialogSettings getDialogSettings() |
| { |
| return CodeUtilsActivator.getDefault().getDialogSettings(); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getElementName(java.lang.Object) |
| */ |
| @Override |
| public String getElementName(Object item) |
| { |
| return (String) item; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getItemsComparator() |
| */ |
| @Override |
| protected Comparator<String> getItemsComparator() |
| { |
| return new Comparator<String>() |
| { |
| |
| public int compare(String o1, String o2) |
| { |
| return o1.compareToIgnoreCase(o2); |
| } |
| }; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#validateItem(java.lang.Object) |
| */ |
| @Override |
| protected IStatus validateItem(Object item) |
| { |
| IStatus status; |
| if (categorySet.contains(item)) |
| { |
| status = new Status(IStatus.OK, CodeUtilsActivator.PLUGIN_ID, ""); |
| } |
| else |
| { |
| status = new Status(IStatus.ERROR, CodeUtilsActivator.PLUGIN_ID, "Select an item."); |
| } |
| return status; |
| } |
| } |