/******************************************************************************* * Copyright (c) 2004, 2011 Tasktop Technologies and others. * 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: * Tasktop Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.internal.tasks.ui.views; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IMenuCreator; import org.eclipse.mylyn.commons.ui.CommonImages; import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; /** * @author Mik Kersten */ class PriorityDropDownAction extends Action implements IMenuCreator { /** * */ private final TaskListView taskListView; private Action priority1; private Action priority2; private Action priority3; private Action priority4; private Action priority5; private Menu dropDownMenu = null; public PriorityDropDownAction(TaskListView taskListView) { super(); this.taskListView = taskListView; setText(Messages.PriorityDropDownAction_Filter_Priority_Lower_Than); setToolTipText(Messages.PriorityDropDownAction_Filter_Priority_Lower_Than); setImageDescriptor(CommonImages.FILTER_PRIORITY); setMenuCreator(this); } public void dispose() { if (dropDownMenu != null) { dropDownMenu.dispose(); dropDownMenu = null; } } public Menu getMenu(Control parent) { if (dropDownMenu != null) { dropDownMenu.dispose(); } dropDownMenu = new Menu(parent); addActionsToMenu(); return dropDownMenu; } public Menu getMenu(Menu parent) { if (dropDownMenu != null) { dropDownMenu.dispose(); } dropDownMenu = new Menu(parent); addActionsToMenu(); return dropDownMenu; } public void addActionsToMenu() { priority1 = new Action("", AS_CHECK_BOX) { //$NON-NLS-1$ @Override public void run() { TasksUiPlugin.getDefault() .getPreferenceStore() .setValue(ITasksUiPreferenceConstants.FILTER_PRIORITY, PriorityLevel.P1.toString()); PriorityDropDownAction.this.taskListView.displayPrioritiesAbove(TaskListView.PRIORITY_LEVELS[0]); } }; priority1.setEnabled(true); priority1.setText(PriorityLevel.P1.getDescription()); priority1.setImageDescriptor(CommonImages.PRIORITY_1); ActionContributionItem item = new ActionContributionItem(priority1); item.fill(dropDownMenu, -1); priority2 = new Action("", AS_CHECK_BOX) { //$NON-NLS-1$ @Override public void run() { TasksUiPlugin.getDefault() .getPreferenceStore() .setValue(ITasksUiPreferenceConstants.FILTER_PRIORITY, PriorityLevel.P2.toString()); PriorityDropDownAction.this.taskListView.displayPrioritiesAbove(TaskListView.PRIORITY_LEVELS[1]); } }; priority2.setEnabled(true); priority2.setText(PriorityLevel.P2.getDescription()); priority2.setImageDescriptor(CommonImages.PRIORITY_2); item = new ActionContributionItem(priority2); item.fill(dropDownMenu, -1); priority3 = new Action("", AS_CHECK_BOX) { //$NON-NLS-1$ @Override public void run() { TasksUiPlugin.getDefault() .getPreferenceStore() .setValue(ITasksUiPreferenceConstants.FILTER_PRIORITY, PriorityLevel.P3.toString()); PriorityDropDownAction.this.taskListView.displayPrioritiesAbove(TaskListView.PRIORITY_LEVELS[2]); } }; priority3.setEnabled(true); priority3.setText(PriorityLevel.P3.getDescription()); priority3.setImageDescriptor(CommonImages.PRIORITY_3); item = new ActionContributionItem(priority3); item.fill(dropDownMenu, -1); priority4 = new Action("", AS_CHECK_BOX) { //$NON-NLS-1$ @Override public void run() { TasksUiPlugin.getDefault() .getPreferenceStore() .setValue(ITasksUiPreferenceConstants.FILTER_PRIORITY, PriorityLevel.P4.toString()); PriorityDropDownAction.this.taskListView.displayPrioritiesAbove(TaskListView.PRIORITY_LEVELS[3]); } }; priority4.setEnabled(true); priority4.setText(PriorityLevel.P4.getDescription()); priority4.setImageDescriptor(CommonImages.PRIORITY_4); item = new ActionContributionItem(priority4); item.fill(dropDownMenu, -1); priority5 = new Action("", AS_CHECK_BOX) { //$NON-NLS-1$ @Override public void run() { TasksUiPlugin.getDefault() .getPreferenceStore() .setValue(ITasksUiPreferenceConstants.FILTER_PRIORITY, PriorityLevel.P5.toString()); PriorityDropDownAction.this.taskListView.displayPrioritiesAbove(TaskListView.PRIORITY_LEVELS[4]); } }; priority5.setEnabled(true); priority5.setImageDescriptor(CommonImages.PRIORITY_5); priority5.setText(PriorityLevel.P5.getDescription()); item = new ActionContributionItem(priority5); item.fill(dropDownMenu, -1); updateCheckedState(); // updateCheckedState(priority1, priority2, priority3, priority4, priority5); } void updateCheckedState() { if (priority1 == null) { return; } String priority = TaskListView.getCurrentPriorityLevel(); priority1.setChecked(false); priority2.setChecked(false); priority3.setChecked(false); priority4.setChecked(false); priority5.setChecked(false); if (priority.equals(TaskListView.PRIORITY_LEVELS[0])) { priority1.setChecked(true); } else if (priority.equals(TaskListView.PRIORITY_LEVELS[1])) { priority1.setChecked(true); priority2.setChecked(true); } else if (priority.equals(TaskListView.PRIORITY_LEVELS[2])) { priority1.setChecked(true); priority2.setChecked(true); priority3.setChecked(true); } else if (priority.equals(TaskListView.PRIORITY_LEVELS[3])) { priority1.setChecked(true); priority2.setChecked(true); priority3.setChecked(true); priority4.setChecked(true); } else if (priority.equals(TaskListView.PRIORITY_LEVELS[4])) { priority1.setChecked(true); priority2.setChecked(true); priority3.setChecked(true); priority4.setChecked(true); priority5.setChecked(true); } } @Override public void run() { this.setChecked(isChecked()); } }