/******************************************************************************* * Copyright (c) 2008, 2017 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.equinox.internal.security.ui.storage.view; import org.eclipse.equinox.internal.security.ui.Activator; import org.eclipse.equinox.internal.security.ui.nls.SecUIMessages; import org.eclipse.jface.dialogs.*; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.*; import org.eclipse.ui.PlatformUI; public class NewValueDialog extends TitleAreaDialog { private static final String HELP_ID = Activator.PLUGIN_ID + ".NewValueDialog"; //$NON-NLS-1$ private static final ImageDescriptor dlgImageDescriptor = ImageDescriptor.createFromFile(NodesView.class, "/icons/storage/new_value_wiz.png"); //$NON-NLS-1$ private final String[] existingKeys; protected Text keyText; protected Text valueText; protected Button encryptButton; protected Button okButton; protected String key; protected String value; protected boolean encrypt; private Image dlgTitleImage = null; public NewValueDialog(String[] existingKeys, Shell parentShell) { super(parentShell); this.existingKeys = existingKeys; } @Override protected void configureShell(Shell shell) { super.configureShell(shell); shell.setText(SecUIMessages.generalTitle); PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, HELP_ID); } @Override protected void createButtonsForButtonBar(Composite parent) { okButton = createButton(parent, IDialogConstants.OK_ID, SecUIMessages.addValueOK, true); okButton.setEnabled(false); createButton(parent, IDialogConstants.CANCEL_ID, SecUIMessages.addValueCancel, false); } @Override protected Control createContents(Composite parent) { Control contents = super.createContents(parent); setTitle(SecUIMessages.addValueTitle); setMessage(SecUIMessages.addValueMsg); dlgTitleImage = dlgImageDescriptor.createImage(); setTitleImage(dlgTitleImage); return contents; } @Override protected Control createDialogArea(Composite parent) { Composite compositeTop = (Composite) super.createDialogArea(parent); Composite composite = new Composite(compositeTop, SWT.NONE); new Label(composite, SWT.LEFT).setText(SecUIMessages.addValueKeyLabel); keyText = new Text(composite, SWT.LEFT | SWT.BORDER); keyText.addModifyListener(event -> okButton.setEnabled(validName())); new Label(composite, SWT.LEFT).setText(SecUIMessages.addValueValueLabel); valueText = new Text(composite, SWT.LEFT | SWT.BORDER); encryptButton = new Button(composite, SWT.CHECK); encryptButton.setText(SecUIMessages.addValueEncryptLabel); encryptButton.setSelection(true); // encrypt by default composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); GridLayoutFactory.swtDefaults().generateLayout(composite); return composite; } protected boolean validName() { String tmp = keyText.getText(); boolean valid; if ((tmp == null) || (tmp.length() == 0)) valid = false; else { valid = true; for (String existingKey : existingKeys) { if (existingKey.equals(tmp)) { valid = false; break; } } valid = (tmp.indexOf('/') == -1); } if (valid) setMessage(SecUIMessages.addValueMsg, IMessageProvider.NONE); else setMessage(SecUIMessages.addValueInvalid, IMessageProvider.ERROR); return valid; } @Override protected void okPressed() { key = keyText.getText(); value = valueText.getText(); encrypt = encryptButton.getSelection(); super.okPressed(); } public String getKey() { return key; } public String getValue() { return value; } public boolean encrypt() { return encrypt; } }