package org.nightlabs.jfire.issuetracking.ui.project; import java.util.Locale; import javax.jdo.FetchPlan; import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.InputDialog; import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.nightlabs.base.ui.resource.SharedImages; import org.nightlabs.base.ui.util.RCPUtil; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.issue.project.Project; import org.nightlabs.jfire.issue.project.ProjectDAO; import org.nightlabs.jfire.issuetracking.ui.IssueTrackingPlugin; import org.nightlabs.jfire.issuetracking.ui.project.create.CreateProjectAction; import org.nightlabs.jfire.issuetracking.ui.resource.Messages; import org.nightlabs.progress.NullProgressMonitor; public class RenameProjectAction extends Action { private InputDialog dialog; private TreeViewer projectTreeViewer; public RenameProjectAction(TreeViewer projectTreeViewer) { this.projectTreeViewer = projectTreeViewer; setId(CreateProjectAction.class.getName()); setImageDescriptor(SharedImages.getSharedImageDescriptor( IssueTrackingPlugin.getDefault(), ProjectAdminTreeComposite.class, "Rename")); //$NON-NLS-1$ setToolTipText(Messages.getString("org.nightlabs.jfire.issuetracking.ui.project.RenameProjectAction.RenameProjectAction.toolTipText")); //$NON-NLS-1$ setText(Messages.getString("org.nightlabs.jfire.issuetracking.ui.project.RenameProjectAction.RenameProjectAction.text")); //$NON-NLS-1$ } @Override public void run() { TreeSelection selection = (TreeSelection)projectTreeViewer.getSelection(); final Project projectToStore = ((ProjectTreeNode)(selection.getFirstElement())).getJdoObject(); dialog = new InputDialog(RCPUtil.getActiveShell(), Messages.getString("org.nightlabs.jfire.issuetracking.ui.project.RenameProjectAction.dialog.renameProject.title"), Messages.getString("org.nightlabs.jfire.issuetracking.ui.project.RenameProjectAction.dialog.renameProject.description"), projectToStore.getName().getText(), null) { //$NON-NLS-1$ //$NON-NLS-2$ @Override protected void okPressed() { try { projectToStore.getName().setText(Locale.ENGLISH.getLanguage(), getValue()); ProjectDAO.sharedInstance().storeProject(projectToStore, false, new String[]{FetchPlan.DEFAULT}, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, new NullProgressMonitor()); dialog.close(); } catch (Exception e) { throw new RuntimeException(e); } }; @Override protected Control createDialogArea(Composite parent) { Control dialogArea = super.createDialogArea(parent); return dialogArea; } }; if (dialog.open() != Window.OK) return; } }