package eu.jucy.gui.favhub; import helpers.GH; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import eu.jucy.gui.ApplicationWorkbenchWindowAdvisor; import eu.jucy.gui.Lang; import eu.jucy.gui.settings.ValidNickChecker; import uc.FavHub; public class FavHubPropertiesDialog extends Dialog { private static final int ADVANCED_BUTTON_ID = 42; private Text userDescriptionText; private Text passwordText; private Text nickText; private Text hubDescriptionText; private Text hubAddressText; private Text hubNameText; private Text emailText; protected FavHub result = null; private FavHub working; private final ValidNickChecker validNick = new ValidNickChecker(false); private final ValidNickChecker validOther = new ValidNickChecker(true); /** * Create the dialog * @param parent */ public FavHubPropertiesDialog(Shell parent) { this(parent, null); } public FavHubPropertiesDialog(Shell parent,FavHub modify) { super(parent); working = modify; setBlockOnOpen(true); } /** * Create contents of the dialog */ protected Composite createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); getShell().setText(Lang.FavHubProperties); final Group hubGroup = new Group(composite, SWT.NONE); final GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 2; hubGroup.setLayout(gridLayout); hubGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); hubGroup.setText(Lang.Hub); final Label label = new Label(hubGroup, SWT.RIGHT); final GridData gridData = new GridData(SWT.FILL, SWT.FILL, false, false); gridData.widthHint = 100; label.setLayoutData(gridData); label.setText(Lang.Name); hubNameText = new Text(hubGroup, SWT.BORDER); final GridData gridData_6 = new GridData(SWT.FILL, SWT.CENTER, true, false); gridData_6.widthHint = 200; hubNameText.setLayoutData(gridData_6); final Label label_1 = new Label(hubGroup, SWT.NONE); final GridData gridData_1 = new GridData(SWT.FILL, SWT.FILL, false, false); gridData_1.widthHint = 100; label_1.setLayoutData(gridData_1); label_1.setAlignment(SWT.RIGHT); label_1.setText(Lang.Address); hubAddressText = new Text(hubGroup, SWT.BORDER); final GridData gridData_7 = new GridData(SWT.FILL, SWT.CENTER, true, false); gridData_7.widthHint = 200; hubAddressText.setLayoutData(gridData_7); final Label label_2 = new Label(hubGroup, SWT.NONE); final GridData gridData_2 = new GridData(SWT.FILL, SWT.FILL, false, false); gridData_2.widthHint = 100; label_2.setLayoutData(gridData_2); label_2.setAlignment(SWT.RIGHT); label_2.setText(Lang.Description); hubDescriptionText = new Text(hubGroup, SWT.BORDER); final GridData gridData_8 = new GridData(SWT.FILL, SWT.CENTER, true, false); gridData_8.widthHint = 200; hubDescriptionText.setLayoutData(gridData_8); final Group identificationGroup = new Group(composite, SWT.NONE); final GridLayout gridLayout_1 = new GridLayout(); gridLayout_1.numColumns = 2; identificationGroup.setLayout(gridLayout_1); identificationGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); identificationGroup.setText(Lang.Identification); final Label label_3 = new Label(identificationGroup, SWT.NONE); final GridData gridData_3 = new GridData(SWT.FILL, SWT.FILL, false, false); gridData_3.widthHint = 100; label_3.setLayoutData(gridData_3); label_3.setAlignment(SWT.RIGHT); label_3.setText(Lang.Nick); nickText = new Text(identificationGroup, SWT.BORDER); nickText.setTextLimit(32); final GridData gridData_9 = new GridData(SWT.FILL, SWT.CENTER, true, false); gridData_9.widthHint = 200; nickText.setLayoutData(gridData_9); nickText.addKeyListener(validNick); final Label label_4 = new Label(identificationGroup, SWT.NONE); final GridData gridData_4 = new GridData(SWT.FILL, SWT.FILL, false, false); gridData_4.widthHint = 100; label_4.setLayoutData(gridData_4); label_4.setAlignment(SWT.RIGHT); label_4.setText(Lang.Password); passwordText = new Text(identificationGroup, SWT.BORDER| SWT.PASSWORD); passwordText.setTextLimit(80); final GridData gridData_10 = new GridData(SWT.FILL, SWT.CENTER, true, false); gridData_10.widthHint = 200; passwordText.setLayoutData(gridData_10); final Label label_5 = new Label(identificationGroup, SWT.NONE); final GridData gridData_5 = new GridData(SWT.FILL, SWT.FILL, false, false); gridData_5.widthHint = 100; label_5.setLayoutData(gridData_5); label_5.setAlignment(SWT.RIGHT); label_5.setText(Lang.UserDescription); userDescriptionText = new Text(identificationGroup, SWT.BORDER); userDescriptionText.setTextLimit(80); final GridData gridData_11 = new GridData(SWT.FILL, SWT.CENTER, true, false); gridData_11.widthHint = 200; userDescriptionText.setLayoutData(gridData_11); userDescriptionText.addKeyListener(validOther); final Label label_6 = new Label(identificationGroup, SWT.NONE); final GridData gridData_12 = new GridData(SWT.FILL, SWT.FILL, false, false); gridData_12.widthHint = 100; label_6.setLayoutData(gridData_12); label_6.setAlignment(SWT.RIGHT); label_6.setText(Lang.EMail); emailText = new Text(identificationGroup, SWT.BORDER); emailText.setTextLimit(80); final GridData gridData_13 = new GridData(SWT.FILL, SWT.CENTER, true, false); gridData_13.widthHint = 200; emailText.setLayoutData(gridData_13); emailText.addKeyListener(validOther); // if (working != null) { hubNameText.setText(working.getHubname()); hubAddressText.setText(working.getHubaddy()); hubDescriptionText.setText(working.getDescription()); nickText.setText(working.getNick()); passwordText.setText(working.getPassword()); userDescriptionText.setText(working.getUserDescription()); emailText.setText(working.getEmail()); } return composite; } protected void createButtonsForButtonBar(Composite parent) { createButton(parent,ADVANCED_BUTTON_ID,Lang.Advanced,false); super.createButtonsForButtonBar(parent); } @Override protected void okPressed() { String hubAddress = hubAddressText.getText(); if (setResultIfValidForFHGeneration()) { result.setHubname(hubNameText.getText()); result = result.setHubaddy(hubAddress); result.setDescription(hubDescriptionText.getText()); result.setNick(nickText.getText()); result.setPassword(passwordText.getText()); result.setUserDescription(userDescriptionText.getText()); result.setEmail(emailText.getText()); super.okPressed(); } } private boolean setResultIfValidForFHGeneration() { String hubAddress = hubAddressText.getText(); if (GH.isNullOrEmpty(hubAddress)) { //no hubaddress MessageDialog.openError(getShell(), "Error", "Hub address empty!"); //TODO translate return false; } if (alreadyExists(hubAddress)) { //already exists MessageDialog.openError(getShell(), "Error", "Hub address already in use!"); //TODO translate return false; } if (!checkValidStrings()) { //check nick / userdescription and email MessageDialog.openError(getShell(), "Error", "Check nick/user description/email field!"); //TODO translate return false; } if (working == null) { working = new FavHub(hubAddress); } result = working; return true; } @Override protected void buttonPressed(int buttonId) { super.buttonPressed(buttonId); if (buttonId == ADVANCED_BUTTON_ID && (working != null || setResultIfValidForFHGeneration())) { AdvancedFavHubPropertiesDialog afhpd = new AdvancedFavHubPropertiesDialog(getShell(),working != null? working: result); afhpd.open(); } else if (buttonId == CANCEL) { result = null; } } private boolean checkValidStrings() { return validNick.checkString(nickText.getText(),33) && validOther.checkString(userDescriptionText.getText(),32) && validOther.checkString(emailText.getText(),32); } private boolean alreadyExists(String hubAddress) { if (working != null && working.getSimpleHubaddy().equals(new FavHub(hubAddress).getSimpleHubaddy())) { return false; } return ApplicationWorkbenchWindowAdvisor.get().getFavHubs().contains(hubAddress); } public FavHub getResult() { return result; } }