blob: 36acfd6298ef5b0797726c5eafa3b43352953b9f [file] [log] [blame]
/*******************************************************************************
* 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);
}
}