git log ui polished
authorDmitry Avdeev <Dmitry.Avdeev@jetbrains.com>
Tue, 20 Dec 2011 09:12:56 +0000 (13:12 +0400)
committerDmitry Avdeev <Dmitry.Avdeev@jetbrains.com>
Tue, 20 Dec 2011 10:01:39 +0000 (14:01 +0400)
platform/vcs-api/src/com/intellij/openapi/vcs/ui/SearchFieldAction.java
plugins/git4idea/src/git4idea/history/wholeTree/GitLogUI.java

index db93a77b67adf54a89927bf3e3fd0e4c61202e61..0443a3f03a90df0c49e89c0076d147a82bec3a18 100644 (file)
@@ -19,10 +19,13 @@ import com.intellij.openapi.actionSystem.AnAction;
 import com.intellij.openapi.actionSystem.Presentation;
 import com.intellij.openapi.actionSystem.ex.CustomComponentAction;
 import com.intellij.openapi.util.IconLoader;
+import com.intellij.ui.IdeBorderFactory;
 import com.intellij.ui.SearchTextField;
 import com.intellij.util.ui.UIUtil;
 
 import javax.swing.*;
+import javax.swing.border.Border;
+import javax.swing.border.CompoundBorder;
 import java.awt.event.KeyEvent;
 
 /**
@@ -56,6 +59,15 @@ public abstract class SearchFieldAction extends AnAction implements CustomCompon
         actionPerformed(null);
       }
     };
+    Border border = myField.getBorder();
+    Border emptyBorder = IdeBorderFactory.createEmptyBorder(3, 0, 2, 0);
+    if (border instanceof CompoundBorder) {
+      myField.setBorder(new CompoundBorder(emptyBorder, ((CompoundBorder)border).getInsideBorder()));
+    }
+    else {
+      myField.setBorder(emptyBorder);
+    }
+
     myField.setSearchIcon(IconLoader.getIcon("/actions/filter_small.png"));
     myComponent = new JPanel();
     final BoxLayout layout = new BoxLayout(myComponent, BoxLayout.X_AXIS);
index ec751740f29cc0834e8b99798d6687a0430f995d..f92b8e769458b2d4869df7991bdb1eb636fa785c 100644 (file)
@@ -22,12 +22,13 @@ import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.diff.impl.CaptionIcon;
 import com.intellij.openapi.diff.impl.patch.formove.FilePathComparator;
-import com.intellij.openapi.help.HelpManager;
 import com.intellij.openapi.ide.CopyPasteManager;
 import com.intellij.openapi.project.DumbAware;
 import com.intellij.openapi.project.DumbAwareAction;
 import com.intellij.openapi.project.Project;
-import com.intellij.openapi.ui.*;
+import com.intellij.openapi.ui.MessageType;
+import com.intellij.openapi.ui.Messages;
+import com.intellij.openapi.ui.Splitter;
 import com.intellij.openapi.ui.popup.*;
 import com.intellij.openapi.util.*;
 import com.intellij.openapi.util.text.StringUtil;
@@ -59,7 +60,6 @@ import com.intellij.util.ui.AdjustComponentWhenShown;
 import com.intellij.util.ui.ColumnInfo;
 import com.intellij.util.ui.UIUtil;
 import com.intellij.vcsUtil.VcsUtil;
-import git4idea.GitBranch;
 import git4idea.GitVcs;
 import git4idea.changes.GitChangeUtils;
 import git4idea.history.browser.*;
@@ -112,8 +112,6 @@ public class GitLogUI implements Disposable {
   private RepositoryChangesBrowser myRepositoryChangesBrowser;
   final List<CommitI> myCommitsInRepositoryChangesBrowser;
   private boolean myDataBeingAdded;
-  private CardLayout myRepoLayout;
-  private JPanel myRepoPanel;
   private boolean myStarted;
   private String myPreviousFilter;
   private final CommentSearchContext myCommentSearchContext;
@@ -388,7 +386,6 @@ public class GitLogUI implements Disposable {
 
   public void createMe() {
     mySplitter = new Splitter(false, 0.7f);
-    mySplitter.setDividerWidth(4);
 
     final JPanel wrapper = createMainTable();
     mySplitter.setFirstComponent(wrapper);
@@ -487,10 +484,10 @@ public class GitLogUI implements Disposable {
   }
 
   private JComponent createRepositoryBrowserDetails() {
-    myRepoLayout = new CardLayout();
-    myRepoPanel = new JPanel(myRepoLayout);
     myRepositoryChangesBrowser = new RepositoryChangesBrowser(myProject, Collections.<CommittedChangeList>emptyList(), Collections.<Change>emptyList(), null);
     myRepositoryChangesBrowser.getDiffAction().registerCustomShortcutSet(CommonShortcuts.getDiff(), myJBTable);
+    myRepositoryChangesBrowser.getViewer().setScrollPaneBorder(IdeBorderFactory.createBorder(SideBorder.LEFT | SideBorder.TOP | SideBorder.RIGHT));
+    myRepositoryChangesBrowser.setBorder(IdeBorderFactory.createEmptyBorder(0, 0, 0, 4));
     myJBTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
       @Override
       public void valueChanged(ListSelectionEvent e) {
@@ -498,13 +495,7 @@ public class GitLogUI implements Disposable {
         mySelectionRequestsMerger.request();
       }
     });
-    myRepoPanel.add("main", myRepositoryChangesBrowser);
-    // todo loading circle
-    myRepoPanel.add("loading", panelWithCenteredText("Loading..."));
-    myRepoPanel.add("tooMuch", panelWithCenteredText("Too many rows selected"));
-    myRepoPanel.add("empty", panelWithCenteredText("Nothing selected"));
-    myRepoLayout.show(myRepoPanel, "empty");
-    return myRepoPanel;
+    return myRepositoryChangesBrowser;
   }
 
   private void selectionChanged() {
@@ -516,17 +507,14 @@ public class GitLogUI implements Disposable {
     selectionChangedForDetails(rows);
 
     if (rows.length == 0) {
-      myRepoLayout.show(myRepoPanel, "empty");
-      myRepoPanel.repaint();
+      myRepositoryChangesBrowser.getViewer().setEmptyText("Nothing selected");
       return;
     } else if (rows.length >= 10) {
-      myRepoLayout.show(myRepoPanel, "tooMuch");
-      myRepoPanel.repaint();
+      myRepositoryChangesBrowser.getViewer().setEmptyText("Too many rows selected");
       return;
     }
     if (! myDataBeingAdded && ! gatherNotLoadedData()) {
-      myRepoLayout.show(myRepoPanel, "loading");
-      myRepoPanel.repaint();
+      myRepositoryChangesBrowser.getViewer().setEmptyText("Loading...");
     }
   }
 
@@ -591,16 +579,6 @@ public class GitLogUI implements Disposable {
     return myDetailsCache.convert(commitAt.selectRepository(myRootsUnderVcs), commitAt.getHash());
   }
 
-  private static JPanel panelWithCenteredText(final String text) {
-    final JPanel jPanel = new JPanel(new BorderLayout());
-    jPanel.setBackground(UIUtil.getTableBackground());
-    final JLabel label = new JLabel(text, JLabel.CENTER);
-    label.setUI(new MultiLineLabelUI());
-    jPanel.add(label, BorderLayout.CENTER);
-    jPanel.setBorder(BorderFactory.createLineBorder(UIUtil.getBorderColor()));
-    return jPanel;
-  }
-
   public void updateByScroll() {
     gatherNotLoadedData();
   }
@@ -638,8 +616,6 @@ public class GitLogUI implements Disposable {
     }
     final List<Change> zipped = CommittedChangesTreeBrowser.zipChanges(changes);
     myRepositoryChangesBrowser.setChangesToDisplay(zipped);
-    myRepoLayout.show(myRepoPanel, "main");
-    myRepoPanel.repaint();
     return true;
   }
 
@@ -679,6 +655,7 @@ public class GitLogUI implements Disposable {
     myJBTable.addMouseListener(popupHandler);
 
     final JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myJBTable);
+    scrollPane.setBorder(IdeBorderFactory.createBorder(SideBorder.TOP | SideBorder.RIGHT | SideBorder.BOTTOM));
     myGraphGutter = new GraphGutter(myTableModel);
     myGraphGutter.setJBTable(myJBTable);
     myTableViewPort = scrollPane.getViewport();
@@ -737,13 +714,12 @@ public class GitLogUI implements Disposable {
       }
     });
     final JPanel borderWrapper = new JPanel(new BorderLayout());
-    borderWrapper.setBorder(BorderFactory.createLineBorder(UIUtil.getBorderColor()));
+    borderWrapper.setBorder(IdeBorderFactory.createBorder(SideBorder.TOP | SideBorder.RIGHT));
     borderWrapper.add(myDetailsPanel.getComponent(), BorderLayout.CENTER);
 
     final Splitter splitter = new Splitter(true, 0.6f);
     splitter.setFirstComponent(wrapper);
     splitter.setSecondComponent(borderWrapper);
-    splitter.setDividerWidth(4);
     return splitter;
   }
 
@@ -1461,6 +1437,7 @@ public class GitLogUI implements Disposable {
   private class MyTextFieldAction extends SearchFieldAction {
     private MyTextFieldAction() {
       super("Filter:");
+
     }
 
     @Override