package org.nightlabs.jfire.issuetracking.ui.issue;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.nightlabs.base.ui.composite.XComposite;
import org.nightlabs.base.ui.resource.SharedImages;
import org.nightlabs.jfire.base.ui.security.UserSearchComposite;
import org.nightlabs.jfire.base.ui.security.UserSearchDialog;
import org.nightlabs.jfire.issuetracking.ui.resource.Messages;
import org.nightlabs.jfire.security.User;
/**
* @author Daniel Mazurek - daniel [at] nightlabs [dot] de
*
*/
public class IssueUserComposite extends XComposite
{
private User selectedUser;
private Text userNameText;
public enum Orientation {
TOP,
LEFT
}
/**
* @param parent
* @param style
* @param caption
*/
public IssueUserComposite(Composite parent, int style, String caption, Orientation orientation) {
super(parent, style);
create(this, caption, orientation);
}
/**
*
* @param parent
* @param style
* @param layoutMode
* @param layoutDataMode
* @param caption
*/
public IssueUserComposite(Composite parent, int style, LayoutMode layoutMode, LayoutDataMode layoutDataMode, String caption, Orientation orientation) {
super(parent, style, layoutMode, layoutDataMode);
create(this, caption, orientation);
}
public User getSelectedUser() {
return selectedUser;
}
protected void create(Composite parent, String caption, Orientation orientation)
{
if (caption != null && orientation != null)
{
if (orientation == Orientation.TOP) {
Label label = new Label(parent, SWT.NONE);
label.setText(caption);
}
else if (orientation == Orientation.LEFT) {
parent = new XComposite(parent, SWT.NONE, LayoutMode.TIGHT_WRAPPER, LayoutDataMode.GRID_DATA_HORIZONTAL, 2);
Label label = new Label(parent, SWT.NONE);
label.setText(caption);
}
}
XComposite userComp = new XComposite(parent, SWT.NONE, LayoutMode.TIGHT_WRAPPER, LayoutDataMode.GRID_DATA_HORIZONTAL, 3);
userNameText = new Text(userComp, userComp.getBorderStyle());
userNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Button chooseUserButton = new Button(userComp, SWT.NONE);
chooseUserButton.setText("..."); //$NON-NLS-1$
chooseUserButton.setToolTipText(Messages.getString("org.nightlabs.jfire.issuetracking.ui.issue.IssueUserComposite.button.chooseUser.tooltip")); //$NON-NLS-1$
chooseUserButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
UserSearchDialog dialog = new UserSearchDialog(getShell(), "", UserSearchComposite.FLAG_TYPE_USER); //$NON-NLS-1$
int returnCode = dialog.open();
if (returnCode == Window.OK) {
selectedUser = dialog.getSelectedUser();
if (selectedUser != null) {
userNameText.setText(selectedUser.getName());
}
}
}
});
Button deleteUserButton = new Button(userComp, SWT.NONE);
deleteUserButton.setImage(SharedImages.DELETE_16x16.createImage());
deleteUserButton.setToolTipText(Messages.getString("org.nightlabs.jfire.issuetracking.ui.issue.IssueUserComposite.button.removeUser.tooltip")); //$NON-NLS-1$
deleteUserButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
selectedUser = null;
userNameText.setText(""); //$NON-NLS-1$
}
});
}
public void addModifyListener(ModifyListener modifyListener)
{
userNameText.addModifyListener(modifyListener);
}
public void removeModifyListener(ModifyListener modifyListener)
{
userNameText.removeModifyListener(modifyListener);
}
}