blob: 3acc41a036b41edc33ff7572e232ce6b7fbbfae1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 BSI Business Systems Integration AG.
* 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:
* BSI Business Systems Integration AG - initial API and implementation
******************************************************************************/
package org.eclipse.scout.nls.sdk.internal.ui.fields;
import org.eclipse.jface.bindings.keys.KeyStroke;
import org.eclipse.jface.fieldassist.ContentProposalAdapter;
import org.eclipse.jface.fieldassist.IContentProposalListener;
import org.eclipse.jface.fieldassist.IContentProposalProvider;
import org.eclipse.jface.fieldassist.TextContentAdapter;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.scout.nls.sdk.internal.ui.AbstractTextComposition;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
public class TextProposalField extends AbstractTextComposition {
private Label m_label;
private Text m_text;
private ContentProposalAdapter m_proposalAdapter;
public TextProposalField(Composite parent, IContentProposalProvider provider) {
this(parent, provider, null);
}
public TextProposalField(Composite parent, IContentProposalProvider provider, KeyStroke keyStroke) {
super(parent, SWT.NONE);
createContent(this, provider, keyStroke);
}
public void createContent(Composite parent, IContentProposalProvider provider, KeyStroke keyStroke) {
m_label = new Label(parent, SWT.RIGHT);
m_text = new Text(parent, SWT.BORDER);
m_proposalAdapter = new ContentProposalAdapter(m_text, new TextContentAdapter(), provider, keyStroke, null);
m_proposalAdapter.setProposalAcceptanceStyle(ProposalAdapter.PROPOSAL_REPLACE);
// TODO make it layoutable from outside
setLayout(new FormLayout());
FormData labelData = new FormData();
labelData.top = new FormAttachment(0, 0);
labelData.left = new FormAttachment(0, 0);
labelData.right = new FormAttachment(40, 0);
labelData.bottom = new FormAttachment(100, 0);
m_label.setLayoutData(labelData);
FormData textData = new FormData();
textData.top = new FormAttachment(0, 0);
textData.left = new FormAttachment(m_label, 5);
textData.right = new FormAttachment(100, 0);
textData.bottom = new FormAttachment(100, 0);
m_text.setLayoutData(textData);
}
@Override
public Text getTextControl() {
return m_text;
}
public void setProposalProvider(IContentProposalProvider provider) {
m_proposalAdapter.setContentProposalProvider(provider);
}
public IContentProposalProvider getProposalProvider() {
return m_proposalAdapter.getContentProposalProvider();
}
public void setLabelProvider(ILabelProvider provider) {
m_proposalAdapter.setLabelProvider(provider);
}
public ILabelProvider getLabelProvider() {
return m_proposalAdapter.getLabelProvider();
}
public void addContentProposalListener(IContentProposalListener listener) {
m_proposalAdapter.addContentProposalListener(listener);
}
public void addModifyListener(ModifyListener listener) {
m_text.addModifyListener(listener);
}
public void removeModifyListener(ModifyListener listener) {
m_text.removeModifyListener(listener);
}
public void addTextFocusListener(FocusListener listener) {
m_text.addFocusListener(listener);
}
public void removeTextFocusListener(FocusListener listener) {
m_text.removeFocusListener(listener);
}
public void addTextVerifyListener(VerifyListener listener) {
m_text.addVerifyListener(listener);
}
public void removeTextVerifyListener(VerifyListener listener) {
m_text.removeVerifyListener(listener);
}
public void setLabelText(String text) {
m_label.setText(text);
}
public String getLabelText() {
return m_label.getText();
}
public void setText(String text) {
m_text.setText(text);
}
public String getText() {
return m_text.getText();
}
}