/******************************************************************************* | |
* Copyright (c) 2011, 2012 Formal Mind GmbH and University of Dusseldorf. | |
* 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: | |
* Michael Jastram - initial API and implementation | |
* Lukas Ladenberger - ProR GUI | |
******************************************************************************/ | |
package org.eclipse.rmf.reqif10.pror.editor.propertiesview; | |
import org.agilemore.agilegrid.AgileGrid; | |
import org.agilemore.agilegrid.editors.DialogCellEditor; | |
import org.eclipse.emf.common.command.Command; | |
import org.eclipse.emf.edit.command.SetCommand; | |
import org.eclipse.emf.edit.domain.EditingDomain; | |
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; | |
import org.eclipse.jface.viewers.ILabelProvider; | |
import org.eclipse.swt.SWT; | |
import org.eclipse.swt.widgets.Button; | |
import org.eclipse.swt.widgets.Composite; | |
import org.eclipse.swt.widgets.Control; | |
public class ExtendedAgileDialogCellEditor extends DialogCellEditor { | |
private EditingDomain editingDomain; | |
private Object affectedObject; | |
private boolean dialogOpen = false; | |
private IItemPropertyDescriptor itemPropertyDescriptor; | |
private ILabelProvider labelProvider; | |
public ExtendedAgileDialogCellEditor(AgileGrid agileGrid, | |
EditingDomain editingDomain, | |
IItemPropertyDescriptor itemPropertyDescriptor, Object object) { | |
super(agileGrid); | |
this.editingDomain = editingDomain; | |
this.itemPropertyDescriptor = itemPropertyDescriptor; | |
this.affectedObject = object; | |
labelProvider = ProrPropertyCellEditorProvider.getLabelProvider( | |
this.itemPropertyDescriptor, this.affectedObject); | |
} | |
@Override | |
protected void doSetValue(Object value) { | |
super.doSetValue(value); | |
} | |
@Override | |
protected Object doGetValue() { | |
Object val = super.doGetValue(); | |
if (dialogOpen) { | |
Command setCmd = SetCommand.create(editingDomain, affectedObject, | |
itemPropertyDescriptor.getFeature(affectedObject), val); | |
editingDomain.getCommandStack().execute(setCmd); | |
} | |
return val; | |
} | |
@Override | |
protected Object openDialogBox(Control cellEditorWindow) { | |
dialogOpen = true; | |
return null; | |
} | |
@Override | |
protected void updateContents(Object object) { | |
if (getDefaultLabel() != null && labelProvider != null) { | |
getDefaultLabel().setText(labelProvider.getText(object)); | |
} | |
} | |
@Override | |
protected Button createButton(Composite parent) { | |
Button result = new Button(parent, SWT.DOWN); | |
result.setText("..."); //$NON-NLS-1$ | |
return result; | |
} | |
} |