blob: ae0a1f13217c80870b1c3039b914ede9de948e06 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008-2011 Chair for Applied Software Engineering,
* Technische Universitaet Muenchen.
* 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:
******************************************************************************/
package org.eclipse.emf.ecp.editor.mecontrols.multiattributecontrol;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.EDataTypeEList;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
/**
* String implementation of a MultiAttributeItem.
*
* @author Christian Kroemer (christian.kroemer@z-corp-online.de)
*/
public class StringMultiAttributeControl extends MultiAttributeControl {
// CONSTANTS
private static final String EMPTY_VALUE = new String("");
// essential references
private MultiAttributeController<String> dataManipulator;
private PersonalListener personalListener = new PersonalListener(); // see inner class
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
@Override
protected void createDataStructures(EStructuralFeature feature) {
EDataTypeEList<String> storedValues = (EDataTypeEList<String>) getModelElement().eGet(feature);
dataManipulator = new MultiAttributeController<String>(this, storedValues);
}
/**
* {@inheritDoc}
*/
@Override
protected void createSingleField(Object contentObj) {
assert (contentObj instanceof String);
String content = (String) contentObj;
StringAttributeControl f = new StringAttributeControl(this, dataManipulator, content);
f.getWidget().addKeyListener(personalListener);
if (!isEditable()) {
f.getWidget().setEditable(false);
}
}
/**
* {@inheritDoc}
*/
@Override
protected void createSingleField() {
StringAttributeControl f = new StringAttributeControl(this, dataManipulator);
f.getWidget().addKeyListener(personalListener);
if (!isEditable()) {
f.getWidget().setEditable(false);
}
setEmptyField(f.getWidget());
}
/**
* Implements specific listeners for this type's widget in general, no single-field-specific listener!
*/
private class PersonalListener implements KeyListener {
public void keyPressed(KeyEvent e) {
if (e.keyCode == 13) { // ENTER
getEmptyField().setFocus();
}
}
public void keyReleased(KeyEvent e) {
// nothing
}
}
/**
* {@inheritDoc}
*/
@Override
public Object[] getAllStoredElements() {
return dataManipulator.getAllStoredElements();
}
/**
* @return the emptyValue
*/
public static String getEmptyValue() {
return EMPTY_VALUE;
}
}