Refactoring: move common code to platform

This commit is contained in:
Alexander Lobas
2014-09-08 16:15:37 +04:00
parent 1498679065
commit 7284c8715e
9 changed files with 387 additions and 310 deletions
@@ -0,0 +1,29 @@
/*
* Copyright 2000-2014 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.designer;
import com.intellij.openapi.ui.ThreeComponentsSplitter;
/**
* @author Alexander Lobas
*/
public interface DesignerEditorPanelFacade {
Object getClientProperty(Object key);
void putClientProperty(Object key, Object value);
ThreeComponentsSplitter getContentSplitter();
}
@@ -54,7 +54,7 @@ public class LightToolWindow extends JPanel {
private final ThreeComponentsSplitter myContentSplitter;
private ToolWindowAnchor myAnchor;
private final Project myProject;
private final AbstractToolWindowManager myManager;
private final LightToolWindowManager myManager;
private final PropertiesComponent myPropertiesComponent;
private boolean myShowContent;
private final String myShowStateKey;
@@ -86,7 +86,7 @@ public class LightToolWindow extends JPanel {
JComponent focusedComponent,
ThreeComponentsSplitter contentSplitter,
ToolWindowAnchor anchor,
AbstractToolWindowManager manager,
LightToolWindowManager manager,
Project project,
PropertiesComponent propertiesComponent,
String key,
@@ -101,8 +101,8 @@ public class LightToolWindow extends JPanel {
myManager = manager;
myPropertiesComponent = propertiesComponent;
myShowStateKey = AbstractToolWindowManager.EDITOR_MODE + key + ".SHOW";
myWidthKey = AbstractToolWindowManager.EDITOR_MODE + key + ".WIDTH";
myShowStateKey = LightToolWindowManager.EDITOR_MODE + key + ".SHOW";
myWidthKey = LightToolWindowManager.EDITOR_MODE + key + ".WIDTH";
HeaderPanel header = new HeaderPanel();
header.setLayout(new BorderLayout());
@@ -0,0 +1,323 @@
/*
* Copyright 2000-2014 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.designer;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ProjectComponent;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
import com.intellij.openapi.fileEditor.FileEditorManagerListener;
import com.intellij.openapi.project.DumbAwareRunnable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowAnchor;
import com.intellij.openapi.wm.ex.ToolWindowEx;
import com.intellij.util.ParameterizedRunnable;
import com.intellij.util.messages.MessageBusConnection;
import com.intellij.util.ui.update.MergingUpdateQueue;
import com.intellij.util.ui.update.Update;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
/**
* @author Alexander Lobas
*/
public abstract class LightToolWindowManager implements ProjectComponent {
public static final String EDITOR_MODE = "UI_DESIGNER_EDITOR_MODE.";
private final MergingUpdateQueue myWindowQueue = new MergingUpdateQueue(getComponentName(), 200, true, null);
protected final Project myProject;
protected final FileEditorManager myFileEditorManager;
protected volatile ToolWindow myToolWindow;
private volatile boolean myToolWindowDisposed;
private final PropertiesComponent myPropertiesComponent;
public final String myEditorModeKey;
private ToggleEditorModeAction myLeftEditorModeAction;
private ToggleEditorModeAction myRightEditorModeAction;
private MessageBusConnection myConnection;
private final FileEditorManagerListener myListener = new FileEditorManagerListener() {
@Override
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
bindToDesigner(getActiveDesigner());
}
@Override
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
bindToDesigner(getActiveDesigner());
}
});
}
@Override
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
bindToDesigner(getDesigner(event.getNewEditor()));
}
};
//////////////////////////////////////////////////////////////////////////////////////////
//
// ToolWindow
//
//////////////////////////////////////////////////////////////////////////////////////////
protected LightToolWindowManager(Project project, FileEditorManager fileEditorManager) {
myProject = project;
myFileEditorManager = fileEditorManager;
myPropertiesComponent = PropertiesComponent.getInstance(myProject);
myEditorModeKey = EDITOR_MODE + getComponentName() + ".STATE";
}
@Override
public void projectOpened() {
initToolWindow();
StartupManager.getInstance(myProject).runWhenProjectIsInitialized(new DumbAwareRunnable() {
public void run() {
if (getEditorMode() == null) {
initListeners();
bindToDesigner(getActiveDesigner());
}
}
});
}
@Override
public void projectClosed() {
if (!myToolWindowDisposed) {
disposeComponent();
myToolWindowDisposed = true;
myToolWindow = null;
}
}
private void initListeners() {
myConnection = myProject.getMessageBus().connect(myProject);
myConnection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, myListener);
}
private void removeListeners() {
myConnection.disconnect();
myConnection = null;
}
@Nullable
protected abstract DesignerEditorPanelFacade getDesigner(FileEditor editor);
@Nullable
public DesignerEditorPanelFacade getActiveDesigner() {
for (FileEditor editor : myFileEditorManager.getSelectedEditors()) {
DesignerEditorPanelFacade designer = getDesigner(editor);
if (designer != null) {
return designer;
}
}
return null;
}
private void bindToDesigner(final DesignerEditorPanelFacade designer) {
myWindowQueue.cancelAllUpdates();
myWindowQueue.queue(new Update("update") {
@Override
public void run() {
if (myToolWindowDisposed) {
return;
}
if (myToolWindow == null) {
if (designer == null) {
return;
}
initToolWindow();
}
updateToolWindow(designer);
}
});
}
protected abstract void initToolWindow();
protected abstract void updateToolWindow(@Nullable DesignerEditorPanelFacade designer);
protected final void initGearActions() {
ToolWindowEx toolWindow = (ToolWindowEx)myToolWindow;
toolWindow.setAdditionalGearActions(new DefaultActionGroup(createGearActions()));
}
protected abstract ToolWindowAnchor getAnchor();
@Override
public void initComponent() {
}
@Override
public void disposeComponent() {
}
//////////////////////////////////////////////////////////////////////////////////////////
//
// LightToolWindow
//
//////////////////////////////////////////////////////////////////////////////////////////
public final ActionGroup createGearActions() {
DefaultActionGroup group = new DefaultActionGroup("In Editor Mode", true);
if (myLeftEditorModeAction == null) {
myLeftEditorModeAction = createToggleAction(ToolWindowAnchor.LEFT);
}
group.add(myLeftEditorModeAction);
if (myRightEditorModeAction == null) {
myRightEditorModeAction = createToggleAction(ToolWindowAnchor.RIGHT);
}
group.add(myRightEditorModeAction);
return group;
}
protected abstract ToggleEditorModeAction createToggleAction(ToolWindowAnchor anchor);
public final void bind(DesignerEditorPanelFacade designer) {
if (isEditorMode()) {
myCreateAction.run(designer);
}
}
public final void dispose(DesignerEditorPanelFacade designer) {
if (isEditorMode()) {
disposeContent(designer);
}
}
protected final Object getContent(DesignerEditorPanelFacade designer) {
LightToolWindow toolWindow = (LightToolWindow)designer.getClientProperty(getComponentName());
return toolWindow.getContent();
}
protected abstract LightToolWindow createContent(DesignerEditorPanelFacade designer);
protected final LightToolWindow createContent(DesignerEditorPanelFacade designer,
LightToolWindowContent content,
String title,
Icon icon,
JComponent component,
JComponent focusedComponent,
int defaultWidth,
AnAction[] actions) {
return new LightToolWindow(content,
title,
icon,
component,
focusedComponent,
designer.getContentSplitter(),
getEditorMode(),
this,
myProject,
myPropertiesComponent,
getComponentName(),
defaultWidth,
actions);
}
protected final void disposeContent(DesignerEditorPanelFacade designer) {
String key = getComponentName();
LightToolWindow toolWindow = (LightToolWindow)designer.getClientProperty(key);
designer.putClientProperty(key, null);
toolWindow.dispose();
}
private final ParameterizedRunnable<DesignerEditorPanelFacade> myCreateAction = new ParameterizedRunnable<DesignerEditorPanelFacade>() {
@Override
public void run(DesignerEditorPanelFacade designer) {
designer.putClientProperty(getComponentName(), createContent(designer));
}
};
private final ParameterizedRunnable<DesignerEditorPanelFacade> myUpdateAnchorAction =
new ParameterizedRunnable<DesignerEditorPanelFacade>() {
@Override
public void run(DesignerEditorPanelFacade designer) {
LightToolWindow toolWindow = (LightToolWindow)designer.getClientProperty(getComponentName());
toolWindow.updateAnchor(getEditorMode());
}
};
private final ParameterizedRunnable<DesignerEditorPanelFacade> myDisposeAction = new ParameterizedRunnable<DesignerEditorPanelFacade>() {
@Override
public void run(DesignerEditorPanelFacade designer) {
disposeContent(designer);
}
};
private void runUpdateContent(ParameterizedRunnable<DesignerEditorPanelFacade> action) {
for (FileEditor editor : myFileEditorManager.getAllEditors()) {
DesignerEditorPanelFacade designer = getDesigner(editor);
if (designer != null) {
action.run(designer);
}
}
}
protected final boolean isEditorMode() {
return getEditorMode() != null;
}
@Nullable
final ToolWindowAnchor getEditorMode() {
String value = myPropertiesComponent.getValue(myEditorModeKey);
if (value == null) {
return getAnchor();
}
return value.equals("ToolWindow") ? null : ToolWindowAnchor.fromText(value);
}
final void setEditorMode(@Nullable ToolWindowAnchor newState) {
ToolWindowAnchor oldState = getEditorMode();
myPropertiesComponent.setValue(myEditorModeKey, newState == null ? "ToolWindow" : newState.toString());
if (oldState != null && newState != null) {
runUpdateContent(myUpdateAnchorAction);
}
else if (newState != null) {
removeListeners();
updateToolWindow(null);
runUpdateContent(myCreateAction);
}
else {
runUpdateContent(myDisposeAction);
initListeners();
bindToDesigner(getActiveDesigner());
}
}
final ToolWindow getToolWindow() {
return myToolWindow;
}
}
@@ -15,7 +15,6 @@
*/
package com.intellij.designer;
import com.intellij.designer.palette.PaletteToolWindowManager;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.openapi.project.Project;
@@ -25,12 +24,12 @@ import com.intellij.openapi.wm.ToolWindowAnchor;
/**
* @author Alexander Lobas
*/
public class ToggleEditorModeAction extends ToggleAction {
private final AbstractToolWindowManager myManager;
private final Project myProject;
public abstract class ToggleEditorModeAction extends ToggleAction {
protected final LightToolWindowManager myManager;
protected final Project myProject;
private final ToolWindowAnchor myAnchor;
public ToggleEditorModeAction(AbstractToolWindowManager manager, Project project, ToolWindowAnchor anchor) {
public ToggleEditorModeAction(LightToolWindowManager manager, Project project, ToolWindowAnchor anchor) {
super(StringUtil.capitalize(anchor.toString()), "Pin/unpin tool window to " + anchor + " side UI Designer Editor", null);
myManager = manager;
myProject = project;
@@ -47,7 +46,7 @@ public class ToggleEditorModeAction extends ToggleAction {
if (state) {
myManager.setEditorMode(myAnchor);
AbstractToolWindowManager manager = getOppositeManager();
LightToolWindowManager manager = getOppositeManager();
if (manager.getEditorMode() == myAnchor) {
manager.setEditorMode(myAnchor == ToolWindowAnchor.LEFT ? ToolWindowAnchor.RIGHT : ToolWindowAnchor.LEFT);
}
@@ -57,9 +56,5 @@ public class ToggleEditorModeAction extends ToggleAction {
}
}
private AbstractToolWindowManager getOppositeManager() {
AbstractToolWindowManager designerManager = DesignerToolWindowManager.getInstance(myProject);
AbstractToolWindowManager paletteManager = PaletteToolWindowManager.getInstance(myProject);
return myManager == designerManager ? paletteManager : designerManager;
}
protected abstract LightToolWindowManager getOppositeManager();
}
@@ -15,121 +15,25 @@
*/
package com.intellij.designer;
import com.intellij.designer.designSurface.DesignerEditorPanel;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ProjectComponent;
import com.intellij.designer.palette.PaletteToolWindowManager;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
import com.intellij.openapi.fileEditor.FileEditorManagerListener;
import com.intellij.openapi.project.DumbAwareRunnable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowAnchor;
import com.intellij.openapi.wm.ex.ToolWindowEx;
import com.intellij.util.ParameterizedRunnable;
import com.intellij.util.messages.MessageBusConnection;
import com.intellij.util.ui.update.MergingUpdateQueue;
import com.intellij.util.ui.update.Update;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
/**
* @author Alexander Lobas
*/
public abstract class AbstractToolWindowManager implements ProjectComponent {
public static final String EDITOR_MODE = "UI_DESIGNER_EDITOR_MODE.";
private final MergingUpdateQueue myWindowQueue = new MergingUpdateQueue(getComponentName(), 200, true, null);
protected final Project myProject;
protected final FileEditorManager myFileEditorManager;
protected volatile ToolWindow myToolWindow;
private volatile boolean myToolWindowDisposed;
private final PropertiesComponent myPropertiesComponent;
public final String myEditorModeKey;
private ToggleEditorModeAction myLeftEditorModeAction;
private ToggleEditorModeAction myRightEditorModeAction;
private MessageBusConnection myConnection;
private final FileEditorManagerListener myListener = new FileEditorManagerListener() {
@Override
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
bindToDesigner(getActiveDesigner());
}
@Override
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
bindToDesigner(getActiveDesigner());
}
});
}
@Override
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
bindToDesigner(getDesigner(event.getNewEditor()));
}
};
//////////////////////////////////////////////////////////////////////////////////////////
//
// ToolWindow
//
//////////////////////////////////////////////////////////////////////////////////////////
public abstract class AbstractToolWindowManager extends LightToolWindowManager {
protected AbstractToolWindowManager(Project project, FileEditorManager fileEditorManager) {
myProject = project;
myFileEditorManager = fileEditorManager;
myPropertiesComponent = PropertiesComponent.getInstance(myProject);
myEditorModeKey = EDITOR_MODE + getComponentName() + ".STATE";
}
@Override
public void projectOpened() {
initToolWindow();
StartupManager.getInstance(myProject).runWhenProjectIsInitialized(new DumbAwareRunnable() {
public void run() {
if (getEditorMode() == null) {
initListeners();
bindToDesigner(getActiveDesigner());
}
}
});
}
@Override
public void projectClosed() {
if (!myToolWindowDisposed) {
disposeComponent();
myToolWindowDisposed = true;
myToolWindow = null;
}
}
private void initListeners() {
myConnection = myProject.getMessageBus().connect(myProject);
myConnection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, myListener);
}
private void removeListeners() {
myConnection.disconnect();
myConnection = null;
super(project, fileEditorManager);
}
@Nullable
private static DesignerEditorPanel getDesigner(FileEditor editor) {
@Override
protected DesignerEditorPanelFacade getDesigner(FileEditor editor) {
if (editor instanceof DesignerEditor) {
DesignerEditor designerEditor = (DesignerEditor)editor;
return designerEditor.getDesignerPanel();
@@ -137,196 +41,20 @@ public abstract class AbstractToolWindowManager implements ProjectComponent {
return null;
}
@Nullable
public DesignerEditorPanel getActiveDesigner() {
for (FileEditor editor : myFileEditorManager.getSelectedEditors()) {
DesignerEditorPanel designer = getDesigner(editor);
if (designer != null) {
return designer;
@Override
protected ToggleEditorModeAction createToggleAction(ToolWindowAnchor anchor) {
return new ToggleEditorModeAction(this, myProject, anchor) {
@Override
protected LightToolWindowManager getOppositeManager() {
AbstractToolWindowManager designerManager = DesignerToolWindowManager.getInstance(myProject);
AbstractToolWindowManager paletteManager = PaletteToolWindowManager.getInstance(myProject);
return myManager == designerManager ? paletteManager : designerManager;
}
}
return null;
};
}
@Nullable
protected static DesignerCustomizations getCustomizations() {
return DesignerCustomizations.EP_NAME.findExtension(DesignerCustomizations.class);
}
private void bindToDesigner(final DesignerEditorPanel designer) {
myWindowQueue.cancelAllUpdates();
myWindowQueue.queue(new Update("update") {
@Override
public void run() {
if (myToolWindowDisposed) {
return;
}
if (myToolWindow == null) {
if (designer == null) {
return;
}
initToolWindow();
}
updateToolWindow(designer);
}
});
}
protected abstract void initToolWindow();
protected abstract void updateToolWindow(@Nullable DesignerEditorPanel designer);
protected final void initGearActions() {
ToolWindowEx toolWindow = (ToolWindowEx)myToolWindow;
toolWindow.setAdditionalGearActions(new DefaultActionGroup(createGearActions()));
}
protected abstract ToolWindowAnchor getAnchor();
@Override
public void initComponent() {
}
@Override
public void disposeComponent() {
}
//////////////////////////////////////////////////////////////////////////////////////////
//
// LightToolWindow
//
//////////////////////////////////////////////////////////////////////////////////////////
public final ActionGroup createGearActions() {
DefaultActionGroup group = new DefaultActionGroup("In Editor Mode", true);
if (myLeftEditorModeAction == null) {
myLeftEditorModeAction = new ToggleEditorModeAction(this, myProject, ToolWindowAnchor.LEFT);
}
group.add(myLeftEditorModeAction);
if (myRightEditorModeAction == null) {
myRightEditorModeAction = new ToggleEditorModeAction(this, myProject, ToolWindowAnchor.RIGHT);
}
group.add(myRightEditorModeAction);
return group;
}
public final void bind(DesignerEditorPanel designer) {
if (isEditorMode()) {
myCreateAction.run(designer);
}
}
public final void dispose(DesignerEditorPanel designer) {
if (isEditorMode()) {
disposeContent(designer);
}
}
protected final Object getContent(DesignerEditorPanel designer) {
LightToolWindow toolWindow = (LightToolWindow)designer.getClientProperty(getComponentName());
return toolWindow.getContent();
}
protected abstract LightToolWindow createContent(DesignerEditorPanel designer);
protected final LightToolWindow createContent(DesignerEditorPanel designer,
LightToolWindowContent content,
String title,
Icon icon,
JComponent component,
JComponent focusedComponent,
int defaultWidth,
AnAction[] actions) {
return new LightToolWindow(content,
title,
icon,
component,
focusedComponent,
designer.getContentSplitter(),
getEditorMode(),
this,
myProject,
myPropertiesComponent,
getComponentName(),
defaultWidth,
actions);
}
protected final void disposeContent(DesignerEditorPanel designer) {
String key = getComponentName();
LightToolWindow toolWindow = (LightToolWindow)designer.getClientProperty(key);
designer.putClientProperty(key, null);
toolWindow.dispose();
}
private final ParameterizedRunnable<DesignerEditorPanel> myCreateAction = new ParameterizedRunnable<DesignerEditorPanel>() {
@Override
public void run(DesignerEditorPanel designer) {
designer.putClientProperty(getComponentName(), createContent(designer));
}
};
private final ParameterizedRunnable<DesignerEditorPanel> myUpdateAnchorAction = new ParameterizedRunnable<DesignerEditorPanel>() {
@Override
public void run(DesignerEditorPanel designer) {
LightToolWindow toolWindow = (LightToolWindow)designer.getClientProperty(getComponentName());
toolWindow.updateAnchor(getEditorMode());
}
};
private final ParameterizedRunnable<DesignerEditorPanel> myDisposeAction = new ParameterizedRunnable<DesignerEditorPanel>() {
@Override
public void run(DesignerEditorPanel designer) {
disposeContent(designer);
}
};
private void runUpdateContent(ParameterizedRunnable<DesignerEditorPanel> action) {
for (FileEditor editor : myFileEditorManager.getAllEditors()) {
DesignerEditorPanel designer = getDesigner(editor);
if (designer != null) {
action.run(designer);
}
}
}
protected final boolean isEditorMode() {
return getEditorMode() != null;
}
@Nullable
final ToolWindowAnchor getEditorMode() {
String value = myPropertiesComponent.getValue(myEditorModeKey);
if (value == null) {
return getAnchor();
}
return value.equals("ToolWindow") ? null : ToolWindowAnchor.fromText(value);
}
final void setEditorMode(@Nullable ToolWindowAnchor newState) {
ToolWindowAnchor oldState = getEditorMode();
myPropertiesComponent.setValue(myEditorModeKey, newState == null ? "ToolWindow" : newState.toString());
if (oldState != null && newState != null) {
runUpdateContent(myUpdateAnchorAction);
}
else if (newState != null) {
removeListeners();
updateToolWindow(null);
runUpdateContent(myCreateAction);
}
else {
runUpdateContent(myDisposeAction);
initListeners();
bindToDesigner(getActiveDesigner());
}
}
final ToolWindow getToolWindow() {
return myToolWindow;
}
}
@@ -96,8 +96,8 @@ public final class DesignerToolWindowManager extends AbstractToolWindowManager {
}
@Override
protected void updateToolWindow(@Nullable DesignerEditorPanel designer) {
myToolWindowContent.update(designer);
protected void updateToolWindow(@Nullable DesignerEditorPanelFacade designer) {
myToolWindowContent.update((DesignerEditorPanel)designer);
if (designer == null) {
myToolWindow.setAvailable(false, null);
@@ -126,9 +126,9 @@ public final class DesignerToolWindowManager extends AbstractToolWindowManager {
//////////////////////////////////////////////////////////////////////////////////////////
@Override
protected LightToolWindow createContent(DesignerEditorPanel designer) {
protected LightToolWindow createContent(DesignerEditorPanelFacade designer) {
DesignerToolWindow toolWindowContent = new DesignerToolWindow(myProject, false);
toolWindowContent.update(designer);
toolWindowContent.update((DesignerEditorPanel)designer);
return createContent(designer,
toolWindowContent,
@@ -78,7 +78,8 @@ import java.util.List;
/**
* @author Alexander Lobas
*/
public abstract class DesignerEditorPanel extends JPanel implements DataProvider, ModuleProvider, RadPropertyContext {
public abstract class DesignerEditorPanel extends JPanel
implements DesignerEditorPanelFacade, DataProvider, ModuleProvider, RadPropertyContext {
private static final Logger LOG = Logger.getInstance("#com.intellij.designer.designSurface.DesignerEditorPanel");
protected static final Integer LAYER_COMPONENT = JLayeredPane.DEFAULT_LAYER;
@@ -17,6 +17,7 @@ package com.intellij.designer.palette;
import com.intellij.designer.AbstractToolWindowManager;
import com.intellij.designer.DesignerCustomizations;
import com.intellij.designer.DesignerEditorPanelFacade;
import com.intellij.designer.LightToolWindow;
import com.intellij.designer.designSurface.DesignerEditorPanel;
import com.intellij.icons.AllIcons;
@@ -85,8 +86,8 @@ public class PaletteToolWindowManager extends AbstractToolWindowManager {
}
@Override
protected void updateToolWindow(@Nullable DesignerEditorPanel designer) {
myToolWindowPanel.loadPalette(designer);
protected void updateToolWindow(@Nullable DesignerEditorPanelFacade designer) {
myToolWindowPanel.loadPalette((DesignerEditorPanel)designer);
if (myToolWindowPanel.isEmpty()) {
myToolWindow.setAvailable(false, null);
@@ -115,9 +116,9 @@ public class PaletteToolWindowManager extends AbstractToolWindowManager {
//////////////////////////////////////////////////////////////////////////////////////////
@Override
protected LightToolWindow createContent(DesignerEditorPanel designer) {
protected LightToolWindow createContent(DesignerEditorPanelFacade designer) {
PalettePanel palettePanel = new PalettePanel();
palettePanel.loadPalette(designer);
palettePanel.loadPalette((DesignerEditorPanel)designer);
return createContent(designer,
palettePanel,