Android migrated to FacetDependentToolWindow

This commit is contained in:
Dmitry Avdeev
2011-06-01 17:39:37 +04:00
parent d4d1581399
commit 3ef32c6a39
3 changed files with 9 additions and 63 deletions
+5 -5
View File
@@ -128,11 +128,11 @@
<annotator language="XML" implementationClass="org.jetbrains.android.AndroidColorAnnotator" order="first"/>
<xml.elementDescriptorProvider implementation="org.jetbrains.android.dom.AndroidDomElementDescriptorProvider" order="first"/>
<toolWindow id="Android Logcat"
anchor="bottom"
icon="/icons/android.png"
factoryClass="org.jetbrains.android.logcat.AndroidLogcatToolWindowFactory"
conditionClass="org.jetbrains.android.logcat.AndroidLogcatToolWindowFactory"/>
<facet.toolWindow id="Android Logcat"
facetIdList="android"
anchor="bottom"
icon="/icons/android.png"
factoryClass="org.jetbrains.android.logcat.AndroidLogcatToolWindowFactory"/>
<projectService serviceInterface="org.jetbrains.android.logcat.AndroidLogcatFiltersPreferences"
serviceImplementation="org.jetbrains.android.logcat.AndroidLogcatFiltersPreferences"/>
<xml.xmlExtension implementation="org.jetbrains.android.dom.AndroidXmlExtension" order="first"/>
@@ -16,11 +16,6 @@
package org.jetbrains.android;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.project.ProjectManagerAdapter;
import org.jetbrains.android.logcat.AndroidLogcatToolWindowFactory;
import org.jetbrains.android.sdk.AndroidSdk;
import org.jetbrains.annotations.NotNull;
@@ -28,7 +23,6 @@ import org.jetbrains.annotations.NotNull;
* @author coyote
*/
public class AndroidPlugin implements ApplicationComponent {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.android.AndroidPlugin");
@NotNull
public String getComponentName() {
@@ -36,12 +30,6 @@ public class AndroidPlugin implements ApplicationComponent {
}
public void initComponent() {
ProjectManager.getInstance().addProjectManagerListener(new ProjectManagerAdapter() {
@Override
public void projectOpened(final Project project) {
new AndroidLogcatToolWindowFactory().configureToolWindow(project);
}
});
}
public void disposeComponent() {
@@ -18,21 +18,13 @@ package org.jetbrains.android.logcat;
import com.intellij.CommonBundle;
import com.intellij.facet.ProjectFacetManager;
import com.intellij.facet.ProjectWideFacetAdapter;
import com.intellij.facet.ProjectWideFacetListenersRegistry;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowAnchor;
import com.intellij.openapi.wm.ToolWindowFactory;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.openapi.wm.ex.ToolWindowManagerEx;
import com.intellij.openapi.wm.ex.ToolWindowManagerAdapter;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.wm.ex.ToolWindowManagerEx;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentManager;
import org.jetbrains.android.facet.AndroidFacet;
@@ -46,10 +38,11 @@ import java.util.List;
/**
* @author Eugene.Kudelevsky
*/
public class AndroidLogcatToolWindowFactory implements ToolWindowFactory, Condition<Project> {
public class AndroidLogcatToolWindowFactory implements ToolWindowFactory {
public static final String TOOL_WINDOW_ID = AndroidBundle.message("android.logcat.title");
public void createToolWindowContent(final Project project, final ToolWindow toolWindow) {
toolWindow.setSplitMode(true, null);
toolWindow.setIcon(AndroidUtils.ANDROID_ICON);
toolWindow.setAvailable(true, null);
toolWindow.setToHideOnEmptyContent(true);
@@ -108,39 +101,4 @@ public class AndroidLogcatToolWindowFactory implements ToolWindowFactory, Condit
Messages.showErrorDialog(project, AndroidBundle.message("specify.platform.error"), CommonBundle.getErrorTitle());
}
}
public boolean value(Project project) {
ModuleManager manager = ModuleManager.getInstance(project);
for (Module module : manager.getModules()) {
AndroidFacet facet = AndroidFacet.getInstance(module);
if (facet != null) return true;
}
return false;
}
public void configureToolWindow(final Project project) {
ProjectWideFacetListenersRegistry.getInstance(project)
.registerListener(AndroidFacet.ID, new ProjectWideFacetAdapter<AndroidFacet>() {
@Override
public void firstFacetAdded() {
final ToolWindowManager manager = ToolWindowManager.getInstance(project);
final ToolWindow toolWindow = manager.getToolWindow(AndroidLogcatToolWindowFactory.TOOL_WINDOW_ID);
if (toolWindow == null) {
final ToolWindow window =
manager.registerToolWindow(AndroidLogcatToolWindowFactory.TOOL_WINDOW_ID, false, ToolWindowAnchor.BOTTOM, project);
window.setSplitMode(true, null);
createToolWindowContent(project, window);
}
}
@Override
public void allFacetsRemoved() {
final ToolWindow toolWindow = ToolWindowManager.getInstance(project).getToolWindow(AndroidLogcatToolWindowFactory.TOOL_WINDOW_ID);
if (toolWindow != null) {
ToolWindowManager.getInstance(project).unregisterToolWindow(AndroidLogcatToolWindowFactory.TOOL_WINDOW_ID);
Disposer.dispose(toolWindow.getContentManager());
}
}
});
}
}