/*******************************************************************************
* Copyright (c) 2008, 2011 Obeo.
* 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:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.eef.runtime.ui.widgets;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.eef.runtime.EEFRuntimePlugin;
import org.eclipse.emf.eef.runtime.ui.utils.EEFRuntimeUIMessages;
import org.eclipse.emf.eef.runtime.ui.utils.EditingUtils;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
/**
* LinkEObjectFlatComboViewer with possibility to create the referenced element.
*
*/
public class LinkEReferenceViewer extends LinkEObjectFlatComboViewer {
/**
* Create referenced element button.
*/
private Button createButton;
/** Image for the create button */
protected final org.eclipse.swt.graphics.Image createImage = EEFRuntimePlugin
.getImage(EEFRuntimePlugin.ICONS_16x16 + "Create_16x16.gif"); //$NON-NLS-1$
/**
* Constructor from superclass
*
* @param dialogTitle
* @param input Object
* @param filter ViewerFilter
* @param adapterFactory AdapterFactory
* @param callback EObjectFlatComboViewerListener
*/
public LinkEReferenceViewer(String dialogTitle, Object input,
ViewerFilter filter, AdapterFactory adapterFactory,
EObjectFlatComboViewerListener callback) {
super(dialogTitle, input, filter, adapterFactory, callback);
}
/** (non-Javadoc)
* @see org.eclipse.emf.eef.runtime.ui.widgets.AbstractAdvancedEObjectFlatComboViewer#createControls(org.eclipse.swt.widgets.Composite)
*/
public void createControls(Composite parent) {
super.createControls(parent);
// add create button
createButton();
}
/**
* Add the create button
*/
protected void createButton() {
browseButton.setImage(createImage);
createButton = super.createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
createButton.setImage(addImage);
FormData data = new FormData();
data.right = new FormAttachment(browseButton, 2);
data.top = new FormAttachment(0, -2);
createButton.setLayoutData(data);
createButton.setToolTipText(EEFRuntimeUIMessages.LinkEReferenceViewer_add_tooltip);
EditingUtils.setEEFtype(createButton, "eef::LinkEReferenceViewer::createbutton");
data = (FormData)valueLink.getLayoutData();
data.right = new FormAttachment(createButton, 0);
// listeners setting
createButton.addMouseListener(new MouseAdapter() {
/** (non-Javadoc)
* @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent)
*/
public void mouseUp(MouseEvent e) {
handleCreate();
}
});
}
/** (non-Javadoc)
* @see org.eclipse.emf.eef.runtime.ui.widgets.LinkEObjectFlatComboViewer#setID(java.lang.Object)
*/
public void setID(Object id) {
super.setID(id);
EditingUtils.setID(createButton, id);
}
/** (non-Javadoc)
* @see org.eclipse.emf.eef.runtime.ui.widgets.LinkEObjectFlatComboViewer#setEnabled(boolean)
*/
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
createButton.setEnabled(enabled);
}
/** (non-Javadoc)
* @see org.eclipse.emf.eef.runtime.ui.widgets.LinkEObjectFlatComboViewer#isEnabled()
*/
public boolean isEnabled() {
return super.isEnabled() && createButton.isEnabled();
}
/** (non-Javadoc)
* @see org.eclipse.emf.eef.runtime.ui.widgets.LinkEObjectFlatComboViewer#setToolTipText(java.lang.String)
*/
public void setToolTipText(String tooltip) {
super.setToolTipText(tooltip);
createButton.setToolTipText(tooltip);
}
}