/*******************************************************************************
* Copyright (c) 2009 Fraunhofer IWU 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:
* Fraunhofer IWU - initial API and implementation
*******************************************************************************/
package net.enilink.komma.edit.ui.properties.tabbed.internal.sections;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
import net.enilink.commons.ui.editor.EditorForm;
import net.enilink.komma.core.IEntity;
public class CommonSection extends AbstractPropertySection {
IEntity resource;
boolean dirty = false;
Text nameText;
@Override
public void createControls(Composite parent,
TabbedPropertySheetPage tabbedPropertySheetPage) {
super.createControls(parent, tabbedPropertySheetPage);
parent.setLayout(new GridLayout(2, false));
Label label = getWidgetFactory().createLabel(parent, "Name");
GridData gridData = new GridData(SWT.BEGINNING, SWT.CENTER, false,
false);
label.setLayoutData(gridData);
nameText = getWidgetFactory().createText(parent, "");
nameText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
dirty = true;
}
});
nameText.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
}
@Override
public void focusLost(FocusEvent e) {
renameResource();
}
});
nameText.addSelectionListener(new SelectionListener() {
@Override
public void widgetDefaultSelected(SelectionEvent e) {
renameResource();
}
@Override
public void widgetSelected(SelectionEvent e) {
}
});
gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
nameText.setLayoutData(gridData);
gridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
gridData.horizontalSpan = 2;
Composite composite = getWidgetFactory().createComposite(parent);
composite.setLayoutData(gridData);
EditorForm editorForm = new EditorForm(parent, getWidgetFactory());
}
@Override
public void setInput(IWorkbenchPart part, ISelection selection) {
super.setInput(part, selection);
resource = (IEntity) ((IStructuredSelection) getSelection())
.getFirstElement();
}
@Override
public void refresh() {
refreshName(resource);
super.refresh();
}
protected void renameResource() {
if (dirty) {
String newName = nameText.getText();
if (newName.length() > 0) {
// String newUri = resource.getNameSpace() + newName;
//
// OntResource other =
// resource.getOntModel().getOntResource(newUri);
// if (other == null || !other.equals(resource)) {
// OntResource oldResource = resource;
// resource = OntUtil.renameOntResource(
// oldResource, newUri);
// }
} else {
refreshName(resource);
}
}
dirty = false;
}
protected void refreshName(IEntity resource) {
if (resource.getURI() != null) {
nameText.setText(resource.getURI().localPart());
} else {
nameText.setText("");
}
}
}