/******************************************************************************* * Copyright (c) 2012 Frank Becker 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: * Frank Becker - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.internal.bugzilla.ui.editor; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants; import org.eclipse.mylyn.internal.tasks.ui.editors.TaskEditorDescriptionPart; import org.eclipse.mylyn.tasks.core.data.TaskAttribute; import org.eclipse.mylyn.tasks.ui.TasksUiImages; public class BugzillaTaskEditorDescriptionPart extends TaskEditorDescriptionPart { private class LockAction extends Action { public LockAction() { super(); updateActionState(); } private void updateActionState() { TaskAttribute isPrivate = getAttribute().getAttribute(IBugzillaConstants.BUGZILLA_DESCRIPTION_IS_PRIVATE); if ("1".compareTo(isPrivate.getValue()) == 0) { //$NON-NLS-1$ this.setImageDescriptor(TasksUiImages.LOCK_CLOSE); } else { this.setImageDescriptor(TasksUiImages.LOCK_OPEN); } } @Override public void run() { TaskAttribute isPrivateAttribute = getAttribute().getAttribute( IBugzillaConstants.BUGZILLA_DESCRIPTION_IS_PRIVATE); // isPrivateAttribute can not be null because we only add the Action when the Attribute exists TaskAttribute idAttribute = getAttribute().getAttribute(IBugzillaConstants.BUGZILLA_DESCRIPTION_ID); boolean oldValue = "1".compareTo(isPrivateAttribute.getValue()) == 0; //$NON-NLS-1$ isPrivateAttribute.setValue(!oldValue ? "1" : "0"); //$NON-NLS-1$ //$NON-NLS-2$ String value = idAttribute.getValue(); TaskAttribute definedIsPrivate = getAttribute().getAttribute( IBugzillaConstants.BUGZILLA_PREFIX_DEFINED_ISPRIVATE + value); if (definedIsPrivate == null) { definedIsPrivate = getAttribute().createAttribute( IBugzillaConstants.BUGZILLA_PREFIX_DEFINED_ISPRIVATE + value); } TaskAttribute isPrivate = getAttribute().getAttribute(IBugzillaConstants.BUGZILLA_PREFIX_ISPRIVATE + value); if (isPrivate == null) { isPrivate = getAttribute().createAttribute(IBugzillaConstants.BUGZILLA_PREFIX_ISPRIVATE + value); } definedIsPrivate.setValue("1"); //$NON-NLS-1$ isPrivate.setValue(!oldValue ? "1" : "0"); //$NON-NLS-1$ //$NON-NLS-2$ getModel().attributeChanged(getAttribute()); updateActionState(); } } @Override protected void fillToolBar(ToolBarManager toolBar) { String insidergroup = getModel().getTaskRepository().getProperty(IBugzillaConstants.BUGZILLA_INSIDER_GROUP); TaskAttribute isPrivate = getAttribute().getAttribute(IBugzillaConstants.BUGZILLA_DESCRIPTION_IS_PRIVATE); if (Boolean.parseBoolean(insidergroup) && isPrivate != null) { LockAction lockAction = new LockAction(); toolBar.add(lockAction); } super.fillToolBar(toolBar); } }