diff --git a/platform/dvcs/src/com/intellij/dvcs/DvcsUtil.java b/platform/dvcs/src/com/intellij/dvcs/DvcsUtil.java new file mode 100644 index 000000000000..f305321f15cd --- /dev/null +++ b/platform/dvcs/src/com/intellij/dvcs/DvcsUtil.java @@ -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()); + } + } + +} diff --git a/plugins/git4idea/src/git4idea/GitVcs.java b/plugins/git4idea/src/git4idea/GitVcs.java index e63cf01cfdba..2a8fa5b7dc88 100644 --- a/plugins/git4idea/src/git4idea/GitVcs.java +++ b/plugins/git4idea/src/git4idea/GitVcs.java @@ -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 { 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 { 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(); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgStatusWidget.java b/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgStatusWidget.java index 0db9bbf11d99..478810453644 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgStatusWidget.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/status/ui/HgStatusWidget.java @@ -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() {