[git][hg] IDEA-101135 Install hg widget to the same place as in Git

Move installation to and removal from the status bar to a common utility
class, reuse both in Git and Hg.
This commit is contained in:
Kirill Likhodedov
2013-02-15 13:56:10 +04:00
parent 61252e54eb
commit 5d4e7f50d0
3 changed files with 52 additions and 21 deletions
@@ -0,0 +1,44 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.dvcs;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.wm.StatusBar;
import com.intellij.openapi.wm.StatusBarWidget;
import com.intellij.openapi.wm.WindowManager;
import org.jetbrains.annotations.NotNull;
/**
* @author Kirill Likhodedov
*/
public class DvcsUtil {
public static void installStatusBarWidget(@NotNull Project project, @NotNull StatusBarWidget widget) {
StatusBar statusBar = WindowManager.getInstance().getStatusBar(project);
if (statusBar != null) {
statusBar.addWidget(widget, "after " + (SystemInfo.isMac ? "Encoding" : "InsertOverwrite"), project);
}
}
public static void removeStatusBarWidget(@NotNull Project project, @NotNull StatusBarWidget widget) {
StatusBar statusBar = WindowManager.getInstance().getStatusBar(project);
if (statusBar != null) {
statusBar.removeWidget(widget.ID());
}
}
}
+5 -11
View File
@@ -15,6 +15,7 @@
*/
package git4idea;
import com.intellij.dvcs.DvcsUtil;
import com.intellij.execution.ui.ConsoleViewContentType;
import com.intellij.notification.NotificationDisplayType;
import com.intellij.notification.NotificationGroup;
@@ -31,7 +32,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.vcs.*;
import com.intellij.openapi.vcs.changes.Change;
import com.intellij.openapi.vcs.changes.ChangeProvider;
@@ -49,8 +49,6 @@ import com.intellij.openapi.vcs.update.UpdateEnvironment;
import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList;
import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.StatusBar;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.util.containers.ComparatorDelegate;
import com.intellij.util.containers.Convertor;
import com.intellij.util.ui.UIUtil;
@@ -349,11 +347,8 @@ public class GitVcs extends AbstractVcs<CommittedChangeList> {
GitProjectLogManager.getInstance(myProject).activate();
if (!ApplicationManager.getApplication().isHeadlessEnvironment()) {
StatusBar statusBar = WindowManager.getInstance().getStatusBar(myProject);
if (statusBar != null) {
myBranchWidget = new GitBranchWidget(myProject);
statusBar.addWidget(myBranchWidget, "after " + (SystemInfo.isMac ? "Encoding" : "InsertOverwrite"), myProject);
}
myBranchWidget = new GitBranchWidget(myProject);
DvcsUtil.installStatusBarWidget(myProject, myBranchWidget);
}
if (myRepositoryForAnnotationsListener == null) {
myRepositoryForAnnotationsListener = new GitRepositoryForAnnotationsListener(myProject);
@@ -388,9 +383,8 @@ public class GitVcs extends AbstractVcs<CommittedChangeList> {
NewGitUsersComponent.getInstance(myProject).deactivate();
GitProjectLogManager.getInstance(myProject).deactivate();
StatusBar statusBar = WindowManager.getInstance().getStatusBar(myProject);
if (statusBar != null && myBranchWidget != null) {
statusBar.removeWidget(myBranchWidget.ID());
if (myBranchWidget != null) {
DvcsUtil.removeStatusBarWidget(myProject, myBranchWidget);
myBranchWidget = null;
}
((GitCommitsSequentialIndex) ServiceManager.getService(GitCommitsSequentially.class)).deactivate();
@@ -15,15 +15,14 @@
*/
package org.zmlx.hg4idea.status.ui;
import com.intellij.dvcs.DvcsUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.StatusBar;
import com.intellij.openapi.wm.StatusBarWidget;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.openapi.wm.impl.status.EditorBasedWidget;
import com.intellij.util.Consumer;
import com.intellij.util.messages.MessageBusConnection;
@@ -164,17 +163,11 @@ public class HgStatusWidget extends EditorBasedWidget implements StatusBarWidget
myBusConnection = project.getMessageBus().connect();
myBusConnection.subscribe(HgVcs.STATUS_TOPIC, this);
StatusBar statusBar = WindowManager.getInstance().getStatusBar(project);
if (null != statusBar) {
statusBar.addWidget(this, project);
}
DvcsUtil.installStatusBarWidget(myProject, this);
}
public void deactivate() {
StatusBar statusBar = WindowManager.getInstance().getStatusBar(getProject());
if (null != statusBar) {
statusBar.removeWidget(ID());
}
DvcsUtil.removeStatusBarWidget(myProject, this);
}
private void update() {