+++ /dev/null
-package org.argeo.slc.client.ui.wizards;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-
-import org.argeo.slc.SlcException;
-import org.argeo.slc.client.ui.ClientUiPlugin;
-import org.argeo.slc.client.ui.SlcUiConstants;
-import org.argeo.slc.jcr.SlcJcrResultUtils;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-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.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.ISharedImages;
-
-public class ConfirmOverwriteWizard extends Wizard {
-
- // Define widget here to simplify getters
- private Button overwriteBtn, renameBtn;
- private Text newNameTxt;
- private Label newNameLbl;
-
- // business object
- private String sourceNodeName;
- private Node targetParentNode;
-
- private String newName;
- private String parentRelPath;
- private boolean overwrite;
-
- public ConfirmOverwriteWizard(String sourceNodeName, Node targetParentNode) {
- setWindowTitle("Confirm overwrite or define a new name");
- this.sourceNodeName = sourceNodeName;
- this.targetParentNode = targetParentNode;
- }
-
- @Override
- public void addPages() {
- try {
- addPage(new MyPage());
- } catch (Exception e) {
- throw new SlcException("Cannot add page to wizard ", e);
- }
- getShell().setImage(
- ClientUiPlugin.getDefault().getWorkbench().getSharedImages()
- .getImageDescriptor(ISharedImages.IMG_LCL_LINKTO_HELP)
- .createImage());
- }
-
- // Expose info to the calling view
- public boolean overwrite() {
- return overwrite;
- }
-
- public String newName() {
- return newName;
- }
-
- @Override
- public boolean performFinish() {
- boolean doFinish = false;
-
- if (canFinish()) {
- if (overwriteBtn.getSelection())
- doFinish = MessageDialog.openConfirm(Display.getDefault()
- .getActiveShell(), "CAUTION", "All data contained in ["
- + (parentRelPath != null ? parentRelPath : "")
- + "/"+ sourceNodeName
- + "] are about to be definitively destroyed. \n "
- + "Are you sure you want to proceed ?");
- else
- doFinish = true;
- // cache values
- }
- if (doFinish) {
- overwrite = overwriteBtn.getSelection();
- newName = newNameTxt.getText();
- }
- return doFinish;
- }
-
- class MyPage extends WizardPage implements ModifyListener {
-
- public MyPage() {
- super("");
- String msg = "An object with same name (" + sourceNodeName
- + ") already exists at chosen target path";
-
- // Add target rel path to the message
- Session session;
- String relPath;
- try {
- session = targetParentNode.getSession();
- relPath = targetParentNode.getPath();
- String basePath = SlcJcrResultUtils
- .getMyResultsBasePath(session);
- if (relPath.startsWith(basePath))
- relPath = relPath.substring(basePath.length());
- // FIXME currently add the default base label
- parentRelPath = SlcUiConstants.DEFAULT_MY_RESULTS_FOLDER_LABEL
- + relPath;
- } catch (RepositoryException e) {
- throw new SlcException("Unexpected error while defining "
- + "target parent node rel path", e);
- }
- msg = msg + (parentRelPath == null ? "." : ": \n" + parentRelPath);
-
- // Set Title
- setTitle(msg);
- }
-
- public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayout(new GridLayout(2, false));
-
- // choose between overwrite and rename
- overwriteBtn = new Button(composite, SWT.RADIO);
- overwriteBtn.setText("Overwrite");
- GridData gd = new GridData();
- gd.horizontalIndent = 30;
- gd.horizontalSpan = 2;
- overwriteBtn.setLayoutData(gd);
- overwriteBtn.setSelection(true);
-
- renameBtn = new Button(composite, SWT.RADIO);
- renameBtn.setText("Rename");
- renameBtn.setSelection(false);
- renameBtn.setText("Rename");
- gd = new GridData();
- gd.horizontalIndent = 30;
- gd.horizontalSpan = 2;
- renameBtn.setLayoutData(gd);
-
- newNameLbl = new Label(composite, SWT.LEAD);
- newNameLbl.setText("New name");
- newNameLbl.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false,
- false));
- newNameLbl.setEnabled(false);
-
- newNameTxt = new Text(composite, SWT.LEAD | SWT.BORDER);
- newNameTxt.setText(sourceNodeName);
- newNameTxt.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
- false));
- if (newNameTxt != null)
- newNameTxt.addModifyListener(this);
- newNameTxt.setEnabled(false);
-
- SelectionAdapter sa = new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- updateSelection(overwriteBtn.getSelection());
- }
- };
- overwriteBtn.addSelectionListener(sa);
- renameBtn.addSelectionListener(sa);
-
- // Compulsory
- setControl(composite);
- }
-
- private void updateSelection(boolean overwrite) {
- newNameLbl.setEnabled(!overwrite);
- newNameTxt.setEnabled(!overwrite);
- if (overwrite)
- setPageComplete(true);
- else
- checkComplete();
- }
-
- protected String getTechName() {
- return newNameTxt.getText();
- }
-
- public void modifyText(ModifyEvent event) {
- checkComplete();
- }
-
- private void checkComplete() {
- try {
-
- String newName = newNameTxt.getText();
- if (newName == null || "".equals(newName.trim())) {
- setMessage("Name cannot be blank or empty",
- WizardPage.ERROR);
- setPageComplete(false);
- } else if (targetParentNode.hasNode(newName)) {
- setMessage("An object with the same name already exists.",
- WizardPage.ERROR);
- setPageComplete(false);
- } else {
- setMessage("Complete", WizardPage.INFORMATION);
- setPageComplete(true);
- }
- } catch (RepositoryException e) {
- throw new SlcException("Unexpected error while checking "
- + "children node with same name", e);
- }
- }
- }
-}
\ No newline at end of file