From fba0f9b55c946f815585375015fb20295cb4f946 Mon Sep 17 00:00:00 2001 From: Maas van den Berg Date: Thu, 12 Nov 2009 16:59:59 +0300 Subject: [PATCH] =?utf8?q?Commit=20>=20"=E2=80=8BMessage=20History?= =?utf8?q?=E2=80=8B":=20allow=20to=20delete=20entries=20(IDEADEV-41336)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../vcs/actions/ShowMessageHistoryAction.java | 46 +++++++++++++--------- .../com/intellij/openapi/vcs/ui/Refreshable.java | 7 ++-- .../svn/dialogs/browser/DeleteOptionsDialog.java | 9 ++--- .../svn/dialogs/browser/ImportOptionsDialog.java | 15 ++++--- .../svn/dialogs/browser/MkdirOptionsDialog.java | 16 ++++---- 5 files changed, 51 insertions(+), 42 deletions(-) diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/actions/ShowMessageHistoryAction.java b/platform/vcs-api/src/com/intellij/openapi/vcs/actions/ShowMessageHistoryAction.java index fb6bf5b75e..5abec50082 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/actions/ShowMessageHistoryAction.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/actions/ShowMessageHistoryAction.java @@ -18,8 +18,8 @@ package com.intellij.openapi.vcs.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.editor.actions.ContentChooser; -import com.intellij.openapi.project.Project; import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.CheckinProjectPanel; import com.intellij.openapi.vcs.VcsBundle; import com.intellij.openapi.vcs.VcsConfiguration; @@ -29,7 +29,7 @@ import java.util.Collections; import java.util.List; /** - * Action showing the history of recently used commit messages. Source code of this class is provided + * Action showing the history of recently used commit messages. Source code of this class is provided * as a sample of using the {@link CheckinProjectPanel} API. Actions to be shown in the commit dialog * should be added to the Vcs.MessageActionGroup action group. * @@ -43,11 +43,14 @@ public class ShowMessageHistoryAction extends AnAction implements DumbAware { public void update(AnActionEvent e) { super.update(e); - CheckinProjectPanel panel = (CheckinProjectPanel)e.getDataContext().getData(CheckinProjectPanel.PANEL); + + final CheckinProjectPanel panel = (CheckinProjectPanel)CheckinProjectPanel.PANEL_KEY.getData(e.getDataContext()); + if (panel == null) { e.getPresentation().setVisible(false); e.getPresentation().setEnabled(false); - } else { + } + else { e.getPresentation().setVisible(true); final ArrayList recentMessages = VcsConfiguration.getInstance(panel.getProject()).getRecentMessages(); e.getPresentation().setEnabled(!recentMessages.isEmpty()); @@ -55,37 +58,42 @@ public class ShowMessageHistoryAction extends AnAction implements DumbAware { } public void actionPerformed(AnActionEvent e) { - CheckinProjectPanel panel = (CheckinProjectPanel)e.getDataContext().getData(CheckinProjectPanel.PANEL); + final CheckinProjectPanel panel = (CheckinProjectPanel)CheckinProjectPanel.PANEL_KEY.getData(e.getDataContext()); + if (panel != null) { final Project project = panel.getProject(); final VcsConfiguration configuration = VcsConfiguration.getInstance(project); - final ArrayList recentMessages = configuration.getRecentMessages(); - Collections.reverse(recentMessages); - if (!recentMessages.isEmpty()) { + if (!configuration.getRecentMessages().isEmpty()) { - final ContentChooser contentChooser = new ContentChooser(project, VcsBundle.message("dialog.title.choose.commit.message.from.history"), false){ - protected void removeContentAt(final String content) { - } + final ContentChooser contentChooser = + new ContentChooser(project, VcsBundle.message("dialog.title.choose.commit.message.from.history"), false) { + protected void removeContentAt(final String content) { + configuration.removeMessage(content); + } - protected String getStringRepresentationFor(final String content) { - return content; - } + protected String getStringRepresentationFor(final String content) { + return content; + } + + protected List getContents() { + final List recentMessages = configuration.getRecentMessages(); + Collections.reverse(recentMessages); + return recentMessages; + } + }; - protected List getContents() { - return recentMessages; - } - }; contentChooser.show(); + if (contentChooser.isOK()) { final int selectedIndex = contentChooser.getSelectedIndex(); + if (selectedIndex >= 0) { panel.setCommitMessage(contentChooser.getAllContents().get(selectedIndex)); } } } - } } } diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/ui/Refreshable.java b/platform/vcs-api/src/com/intellij/openapi/vcs/ui/Refreshable.java index 9d0e351aa0..cb0b9d4242 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/ui/Refreshable.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/ui/Refreshable.java @@ -15,7 +15,6 @@ */ package com.intellij.openapi.vcs.ui; -import org.jetbrains.annotations.NonNls; import com.intellij.openapi.actionSystem.DataKey; /** @@ -25,17 +24,19 @@ import com.intellij.openapi.actionSystem.DataKey; * @author lesya */ public interface Refreshable { + DataKey PANEL_KEY = DataKey.create("Panel"); + /** * The data ID which can be used to retrieve the active Refreshable * instance from {@link com.intellij.openapi.actionSystem.DataContext}. * * @see com.intellij.openapi.actionSystem.DataContext#getData(String) */ - @NonNls @Deprecated String PANEL = "Panel"; - DataKey PANEL_KEY = DataKey.create(PANEL); + @Deprecated String PANEL = PANEL_KEY.getName(); void refresh(); void saveState(); + void restoreState(); } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/DeleteOptionsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/DeleteOptionsDialog.java index 50404374b8..c48319cb86 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/DeleteOptionsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/DeleteOptionsDialog.java @@ -89,11 +89,10 @@ public class DeleteOptionsDialog extends DialogWrapper { panel.add(new JLabel("Recent Messages: "), gc); gc.gridy += 1; - ArrayList messages = VcsConfiguration.getInstance(myProject).getRecentMessages(); - if (messages != null) { - Collections.reverse(messages); - } - Object[] model = messages != null ? messages.toArray() : new Object[] {""}; + final ArrayList messages = VcsConfiguration.getInstance(myProject).getRecentMessages(); + Collections.reverse(messages); + + final String[] model = messages.toArray(new String[messages.size()]); final JComboBox messagesBox = new JComboBox(model); messagesBox.setRenderer(new MessageBoxCellRenderer()); panel.add(messagesBox, gc); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ImportOptionsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ImportOptionsDialog.java index 6dfec8a727..d16e78bb0d 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ImportOptionsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/ImportOptionsDialog.java @@ -26,8 +26,8 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.svn.DepthCombo; import org.jetbrains.idea.svn.SvnBundle; -import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.SVNDepth; +import org.tmatesoft.svn.core.SVNURL; import javax.swing.*; import java.awt.*; @@ -127,7 +127,7 @@ public class ImportOptionsDialog extends DialogWrapper implements ActionListener final JLabel depthLabel = new JLabel(SvnBundle.message("label.depth.text")); depthLabel.setToolTipText(SvnBundle.message("label.depth.description")); panel.add(depthLabel, gc); - ++ gc.gridx; + ++gc.gridx; myDepth = new DepthCombo(); panel.add(myDepth, gc); depthLabel.setLabelFor(myDepth); @@ -162,11 +162,10 @@ public class ImportOptionsDialog extends DialogWrapper implements ActionListener panel.add(new JLabel("Recent Messages: "), gc); gc.gridy += 1; - ArrayList messages = VcsConfiguration.getInstance(myProject).getRecentMessages(); - if (messages != null) { - Collections.reverse(messages); - } - Object[] model = messages != null ? messages.toArray() : new Object[] {""}; + final ArrayList messages = VcsConfiguration.getInstance(myProject).getRecentMessages(); + Collections.reverse(messages); + + final String[] model = messages.toArray(new String[messages.size()]); final JComboBox messagesBox = new JComboBox(model); messagesBox.setRenderer(new MessageBoxCellRenderer()); panel.add(messagesBox, gc); @@ -199,7 +198,7 @@ public class ImportOptionsDialog extends DialogWrapper implements ActionListener fcd.setDescription("Select directory to checkout from subversion"); fcd.setHideIgnored(false); VirtualFile[] files = FileChooser.chooseFiles(getContentPane(), fcd, null); - if (files == null || files.length != 1 || files[0] == null) { + if (files.length != 1 || files[0] == null) { return; } myPathField.setText(files[0].getPath().replace('/', File.separatorChar)); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/MkdirOptionsDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/MkdirOptionsDialog.java index adc06381e4..5f69a79898 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/MkdirOptionsDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/browser/MkdirOptionsDialog.java @@ -47,8 +47,8 @@ public class MkdirOptionsDialog extends DialogWrapper { myOriginalURL = url; try { myURL = url.appendPath("NewFolder", true); - } catch (SVNException e) { - // + } + catch (SVNException ignore) { } setTitle("New Remote Folder"); init(); @@ -61,9 +61,10 @@ public class MkdirOptionsDialog extends DialogWrapper { }); if (!project.isDefault()) { - ArrayList messages = VcsConfiguration.getInstance(project).getRecentMessages(); + final ArrayList messages = VcsConfiguration.getInstance(project).getRecentMessages(); Collections.reverse(messages); - Object[] model = messages.toArray(); + + final String[] model = messages.toArray(new String[messages.size()]); myMessagesBox.setModel(new DefaultComboBoxModel(model)); myMessagesBox.setRenderer(new MessageBoxCellRenderer()); } @@ -98,8 +99,8 @@ public class MkdirOptionsDialog extends DialogWrapper { if (getOKAction().isEnabled()) { try { return SVNURL.parseURIEncoded(myURLLabel.getText()); - } catch (SVNException e) { - // + } + catch (SVNException ignore) { } } return null; @@ -128,7 +129,8 @@ public class MkdirOptionsDialog extends DialogWrapper { try { myURLLabel.setText(myOriginalURL.appendPath(newName, false).toString()); getOKAction().setEnabled(true); - } catch (SVNException e) { + } + catch (SVNException e) { myURLLabel.setText(myOriginalURL.toString()); getOKAction().setEnabled(false); } -- 2.11.4.GIT