diff --git a/plugins/android-designer/src/META-INF/plugin.xml b/plugins/android-designer/src/META-INF/plugin.xml
index 79c31c21e215..17837831aa63 100644
--- a/plugins/android-designer/src/META-INF/plugin.xml
+++ b/plugins/android-designer/src/META-INF/plugin.xml
@@ -20,8 +20,6 @@
-
-
diff --git a/plugins/android-designer/src/com/intellij/android/designer/componentTree/AndroidTreeDecorator.java b/plugins/android-designer/src/com/intellij/android/designer/componentTree/AndroidTreeDecorator.java
index af6196f8fac0..635579b6909c 100644
--- a/plugins/android-designer/src/com/intellij/android/designer/componentTree/AndroidTreeDecorator.java
+++ b/plugins/android-designer/src/com/intellij/android/designer/componentTree/AndroidTreeDecorator.java
@@ -21,7 +21,7 @@ import com.intellij.designer.componentTree.TreeComponentDecorator;
import com.intellij.designer.model.IComponentDecorator;
import com.intellij.designer.model.MetaModel;
import com.intellij.designer.model.RadComponent;
-import com.intellij.designer.palette.Item;
+import com.intellij.designer.palette.DefaultPaletteItem;
import com.intellij.designer.propertyTable.Property;
import com.intellij.designer.propertyTable.PropertyTable;
import com.intellij.openapi.util.text.StringUtil;
@@ -46,7 +46,7 @@ public final class AndroidTreeDecorator implements TreeComponentDecorator {
}
StringBuilder fullTitle = new StringBuilder();
- Item item = metaModel.getPaletteItem();
+ DefaultPaletteItem item = metaModel.getPaletteItem();
if (item != null) {
fullTitle.append(item.getTitle());
}
diff --git a/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java b/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java
index 6acfa7bb3cde..20032b5eb9ad 100644
--- a/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java
+++ b/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java
@@ -32,11 +32,10 @@ import com.intellij.designer.designSurface.OperationContext;
import com.intellij.designer.designSurface.selection.NonResizeSelectionDecorator;
import com.intellij.designer.designSurface.tools.ComponentCreationFactory;
import com.intellij.designer.designSurface.tools.ComponentPasteFactory;
-import com.intellij.designer.model.MetaManager;
import com.intellij.designer.model.RadComponent;
-import com.intellij.designer.palette.Item;
-import com.intellij.designer.palette2.PaletteGroup;
-import com.intellij.ide.palette.PaletteItem;
+import com.intellij.designer.palette.DefaultPaletteItem;
+import com.intellij.designer.palette.PaletteGroup;
+import com.intellij.designer.palette.PaletteItem;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
import com.intellij.openapi.module.Module;
@@ -62,7 +61,6 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -446,32 +444,19 @@ public final class AndroidDesignerEditorPanel extends DesignerEditorPanel {
return null;
}
- private List myPaletteGroups;
-
@Override
public List getPaletteGroups() {
- if (myPaletteGroups == null) {
- myPaletteGroups = new ArrayList();
- MetaManager metaManager = ViewsMetaManager.getInstance(getProject());
- for (com.intellij.ide.palette.PaletteGroup group : metaManager.getPaletteGroups()) {
- PaletteGroup newGroup = new PaletteGroup(group.getName());
- for (PaletteItem item : group.getItems()) {
- newGroup.addItem((com.intellij.designer.palette2.PaletteItem)item);
- }
- myPaletteGroups.add(newGroup);
- }
- }
- return myPaletteGroups;
+ return ViewsMetaManager.getInstance(getProject()).getPaletteGroups();
}
@Override
@NotNull
- protected ComponentCreationFactory createCreationFactory(final Item paletteItem) {
+ protected ComponentCreationFactory createCreationFactory(final PaletteItem paletteItem) {
return new ComponentCreationFactory() {
@NotNull
@Override
public RadComponent create() throws Exception {
- RadViewComponent component = ModelParser.createComponent(null, paletteItem.getMetaModel());
+ RadViewComponent component = ModelParser.createComponent(null, ((DefaultPaletteItem)paletteItem).getMetaModel());
if (component instanceof IConfigurableComponent) {
((IConfigurableComponent)component).configure(myRootComponent);
}
diff --git a/plugins/android-designer/src/com/intellij/android/designer/palette/ViewsPaletteProvider.java b/plugins/android-designer/src/com/intellij/android/designer/palette/ViewsPaletteProvider.java
deleted file mode 100644
index a2cee8d4ca5a..000000000000
--- a/plugins/android-designer/src/com/intellij/android/designer/palette/ViewsPaletteProvider.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2000-2012 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.android.designer.palette;
-
-import com.intellij.android.designer.AndroidDesignerEditorProvider;
-import com.intellij.android.designer.model.ViewsMetaManager;
-import com.intellij.designer.DesignerToolWindowManager;
-import com.intellij.designer.model.MetaManager;
-import com.intellij.designer.palette.AbstractPaletteProvider;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.vfs.VirtualFile;
-
-/**
- * @author Alexander Lobas
- */
-public class ViewsPaletteProvider extends AbstractPaletteProvider {
- private final Project myProject;
-
- public ViewsPaletteProvider(Project project) {
- myProject = project;
- }
-
- @Override
- protected boolean accept(VirtualFile virtualFile) {
- return AndroidDesignerEditorProvider.acceptLayout(myProject, virtualFile) &&
- DesignerToolWindowManager.getInstance(myProject).getActiveDesigner() != null;
- }
-
- @Override
- protected MetaManager getMetaManager() {
- return ViewsMetaManager.getInstance(myProject);
- }
-}
\ No newline at end of file
diff --git a/plugins/ui-designer/ui-designer-new/src/META-INF/plugin.xml b/plugins/ui-designer/ui-designer-new/src/META-INF/plugin.xml
index 95581745aef9..4c98e602a95f 100644
--- a/plugins/ui-designer/ui-designer-new/src/META-INF/plugin.xml
+++ b/plugins/ui-designer/ui-designer-new/src/META-INF/plugin.xml
@@ -12,9 +12,9 @@
com.intellij.designer.DesignerToolWindowManager
-
+
+ com.intellij.designer.palette.PaletteToolWindowManager
+
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java
index 963c35edd47d..7102c3e2ceb6 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java
@@ -23,14 +23,13 @@ import com.intellij.designer.componentTree.TreeComponentDecorator;
import com.intellij.designer.designSurface.tools.*;
import com.intellij.designer.model.FindComponentVisitor;
import com.intellij.designer.model.RadComponent;
-import com.intellij.designer.palette.Item;
-import com.intellij.designer.palette2.PaletteGroup;
-import com.intellij.designer.palette2.PaletteItem;
+import com.intellij.designer.palette.PaletteGroup;
+import com.intellij.designer.palette.PaletteItem;
+import com.intellij.designer.palette.PaletteToolWindowManager;
import com.intellij.designer.propertyTable.InplaceContext;
import com.intellij.designer.propertyTable.Property;
import com.intellij.diagnostic.LogMessageEx;
import com.intellij.diagnostic.errordialog.Attachment;
-import com.intellij.ide.palette.impl.PaletteManager;
import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.actionSystem.ActionPlaces;
import com.intellij.openapi.actionSystem.DataProvider;
@@ -61,8 +60,6 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
@@ -107,7 +104,6 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider
private FeedbackLayer myFeedbackLayer;
private InplaceEditingLayer myInplaceEditingLayer;
- private ListSelectionListener myPaletteListener;
protected ToolProvider myToolProvider;
protected EditableArea mySurfaceArea;
@@ -207,21 +203,6 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider
}
};
- myPaletteListener = new ListSelectionListener() {
- @Override
- public void valueChanged(ListSelectionEvent e) {
- if (DesignerToolWindowManager.getInstance(getProject()).getActiveDesigner() == DesignerEditorPanel.this) {
- Item paletteItem = (Item)PaletteManager.getInstance(getProject()).getActiveItem();
- if (paletteItem != null) {
- myToolProvider.setActiveTool(new CreationTool(true, createCreationFactory(paletteItem)));
- }
- else if (myToolProvider.getActiveTool() instanceof CreationTool) {
- myToolProvider.loadDefaultTool();
- }
- }
- }
- };
-
myToolProvider = new ToolProvider() {
@Override
public void loadDefaultTool() {
@@ -231,7 +212,7 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider
@Override
public void setActiveTool(InputTool tool) {
if (getActiveTool() instanceof CreationTool && !(tool instanceof CreationTool)) {
- PaletteManager.getInstance(getProject()).clearActiveItem();
+ PaletteToolWindowManager.getInstance(getProject()).clearActiveItem();
}
if (!(tool instanceof SelectionTool)) {
hideInspections();
@@ -327,8 +308,6 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider
myDesignerCard.add(content);
add(myDesignerCard, DESIGNER_CARD);
- PaletteManager.getInstance(getProject()).addSelectionListener(myPaletteListener);
-
mySourceSelectionListener = new ComponentSelectionListener() {
@Override
public void selectionChanged(EditableArea area) {
@@ -338,8 +317,13 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider
mySurfaceArea.addSelectionListener(mySourceSelectionListener);
}
- public void activatePaletteItem(@Nullable PaletteItem item) {
- // XXX
+ public final void activatePaletteItem(@Nullable PaletteItem paletteItem) {
+ if (paletteItem != null) {
+ myToolProvider.setActiveTool(new CreationTool(true, createCreationFactory(paletteItem)));
+ }
+ else if (myToolProvider.getActiveTool() instanceof CreationTool) {
+ myToolProvider.loadDefaultTool();
+ }
}
protected final void showDesignerCard() {
@@ -697,13 +681,10 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider
protected abstract void execute(List operations);
- public List getPaletteGroups() {
- // XXX
- return null;
- }
+ public abstract List getPaletteGroups();
@NotNull
- protected abstract ComponentCreationFactory createCreationFactory(Item paletteItem);
+ protected abstract ComponentCreationFactory createCreationFactory(PaletteItem paletteItem);
@Nullable
public abstract ComponentPasteFactory createPasteFactory(String xmlComponents);
@@ -731,7 +712,6 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider
}
public void dispose() {
- PaletteManager.getInstance(getProject()).removeSelectionListener(myPaletteListener);
Disposer.dispose(myProgressIcon);
}
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/model/MetaManager.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/model/MetaManager.java
index 5a7666d275fc..792e5b0bbc83 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/model/MetaManager.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/model/MetaManager.java
@@ -15,9 +15,8 @@
*/
package com.intellij.designer.model;
-import com.intellij.designer.palette.Group;
-import com.intellij.designer.palette.Item;
-import com.intellij.ide.palette.PaletteGroup;
+import com.intellij.designer.palette.DefaultPaletteItem;
+import com.intellij.designer.palette.PaletteGroup;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
@@ -49,7 +48,7 @@ public abstract class MetaManager {
private final Map myTag2Model = new HashMap();
private final Map myTarget2Model = new HashMap();
- private final List myPaletteGroups = new ArrayList();
+ private final List myPaletteGroups = new ArrayList();
private PropertyChangeSupport myPaletteChangeSupport;
@@ -71,7 +70,7 @@ public abstract class MetaManager {
}
for (Object element : rootElement.getChild(PALETTE).getChildren(GROUP)) {
- loadGroup(name, (Element)element);
+ loadGroup((Element)element);
}
for (Map.Entry> entry : modelToMorphing.entrySet()) {
@@ -122,7 +121,7 @@ public abstract class MetaManager {
Element palette = element.getChild("palette");
if (palette != null) {
meta.setPaletteItem(
- new Item(palette.getAttributeValue("title"), palette.getAttributeValue("icon"), palette.getAttributeValue("tooltip")));
+ new DefaultPaletteItem(palette.getAttributeValue("title"), palette.getAttributeValue("icon"), palette.getAttributeValue("tooltip")));
}
Element creation = element.getChild("creation");
@@ -177,8 +176,8 @@ public abstract class MetaManager {
}
}
- private void loadGroup(String tab, Element element) throws Exception {
- Group group = new Group(tab, element.getAttributeValue(NAME));
+ private void loadGroup(Element element) throws Exception {
+ PaletteGroup group = new PaletteGroup(element.getAttributeValue(NAME));
for (Object child : element.getChildren(ITEM)) {
String tag = ((Element)child).getAttributeValue(TAG);
@@ -207,8 +206,8 @@ public abstract class MetaManager {
return myTarget2Model.get(target);
}
- public PaletteGroup[] getPaletteGroups() {
- return myPaletteGroups.toArray(new PaletteGroup[myPaletteGroups.size()]);
+ public List getPaletteGroups() {
+ return myPaletteGroups;
}
public void setPaletteChangeSupport(PropertyChangeSupport paletteChangeSupport) {
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/model/MetaModel.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/model/MetaModel.java
index 81844aad55ef..15769877d2a2 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/model/MetaModel.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/model/MetaModel.java
@@ -15,7 +15,7 @@
*/
package com.intellij.designer.model;
-import com.intellij.designer.palette.Item;
+import com.intellij.designer.palette.DefaultPaletteItem;
import com.intellij.designer.propertyTable.IPropertyDecorator;
import com.intellij.designer.propertyTable.Property;
import com.intellij.openapi.util.IconLoader;
@@ -33,7 +33,7 @@ public class MetaModel {
private Class myLayout;
private final String myTarget;
private final String myTag;
- private Item myPaletteItem;
+ private DefaultPaletteItem myPaletteItem;
private String myTitle;
private String myIconPath;
private Icon myIcon;
@@ -109,11 +109,11 @@ public class MetaModel {
myIcon = null;
}
- public Item getPaletteItem() {
+ public DefaultPaletteItem getPaletteItem() {
return myPaletteItem;
}
- public void setPaletteItem(@NotNull Item paletteItem) {
+ public void setPaletteItem(@NotNull DefaultPaletteItem paletteItem) {
myPaletteItem = paletteItem;
myPaletteItem.setMetaModel(this);
}
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/AbstractPaletteProvider.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/AbstractPaletteProvider.java
deleted file mode 100644
index 53b6dccf6c6f..000000000000
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/AbstractPaletteProvider.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2000-2012 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.palette;
-
-import com.intellij.designer.model.MetaManager;
-import com.intellij.ide.palette.PaletteGroup;
-import com.intellij.ide.palette.PaletteItemProvider;
-import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.vfs.VirtualFile;
-
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-
-/**
- * @author Alexander Lobas
- */
-public abstract class AbstractPaletteProvider implements PaletteItemProvider {
- private static final Logger LOG = Logger.getInstance("#com.intellij.designer.palette.AbstractPaletteProvider");
-
- private final PropertyChangeSupport myPropertyChangeSupport = new PropertyChangeSupport(this);
-
- @Override
- public PaletteGroup[] getActiveGroups(VirtualFile virtualFile) {
- if (accept(virtualFile)) {
- MetaManager manager = getMetaManager();
- if (manager != null) {
- manager.setPaletteChangeSupport(myPropertyChangeSupport);
- return manager.getPaletteGroups();
- }
- LOG.error("VirtualFile: " + virtualFile + " accepted but MetaManager is null");
- }
- return PaletteGroup.EMPTY_ARRAY;
- }
-
- protected abstract boolean accept(VirtualFile virtualFile);
-
- protected abstract MetaManager getMetaManager();
-
- @Override
- public void addListener(PropertyChangeListener listener) {
- myPropertyChangeSupport.addPropertyChangeListener(listener);
- }
-
- @Override
- public void removeListener(PropertyChangeListener listener) {
- myPropertyChangeSupport.removePropertyChangeListener(listener);
- }
-}
\ No newline at end of file
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/Item.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/DefaultPaletteItem.java
similarity index 58%
rename from plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/Item.java
rename to plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/DefaultPaletteItem.java
index f2e65797b783..2c6ee2264ada 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/Item.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/DefaultPaletteItem.java
@@ -16,20 +16,14 @@
package com.intellij.designer.palette;
import com.intellij.designer.model.MetaModel;
-import com.intellij.ide.dnd.DnDDragStartBean;
-import com.intellij.ide.palette.PaletteItem;
-import com.intellij.openapi.actionSystem.ActionGroup;
-import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.IconLoader;
-import com.intellij.ui.ColoredListCellRenderer;
-import com.intellij.ui.SimpleTextAttributes;
import javax.swing.*;
/**
* @author Alexander Lobas
*/
-public final class Item implements PaletteItem, com.intellij.designer.palette2.PaletteItem {
+public final class DefaultPaletteItem implements PaletteItem {
private String myTitle;
private String myIconPath;
private Icon myIcon;
@@ -37,16 +31,18 @@ public final class Item implements PaletteItem, com.intellij.designer.palette2.P
private MetaModel myMetaModel;
- public Item(String title, String iconPath, String tooltip) {
+ public DefaultPaletteItem(String title, String iconPath, String tooltip) {
myTitle = title;
myIconPath = iconPath;
myTooltip = tooltip;
}
+ @Override
public String getTitle() {
return myTitle;
}
+ @Override
public Icon getIcon() {
if (myIcon == null) {
myIcon = IconLoader.findIcon(myIconPath, myMetaModel.getModel());
@@ -59,28 +55,6 @@ public final class Item implements PaletteItem, com.intellij.designer.palette2.P
return myTooltip;
}
- @Override
- public void customizeCellRenderer(ColoredListCellRenderer cellRenderer, boolean selected, boolean hasFocus) {
- cellRenderer.setIcon(getIcon());
- cellRenderer.append(myTitle, SimpleTextAttributes.REGULAR_ATTRIBUTES);
- cellRenderer.setToolTipText(myTooltip);
- }
-
- @Override
- public DnDDragStartBean startDragging() {
- return null;
- }
-
- @Override
- public ActionGroup getPopupActionGroup() {
- return null; // TODO: Auto-generated method stub
- }
-
- @Override
- public Object getData(Project project, String dataId) {
- return null; // TODO: Auto-generated method stub
- }
-
public MetaModel getMetaModel() {
return myMetaModel;
}
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/Group.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/Group.java
deleted file mode 100644
index d3b2f46332fa..000000000000
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/Group.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2000-2012 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.palette;
-
-import com.intellij.ide.palette.PaletteGroup;
-import com.intellij.ide.palette.PaletteItem;
-import com.intellij.openapi.actionSystem.ActionGroup;
-import com.intellij.openapi.project.Project;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Alexander Lobas
- */
-public final class Group implements PaletteGroup {
- private final String myTabName;
- private final String myName;
- private List- myItems = new ArrayList
- ();
-
- public Group(String tabName, String name) {
- myTabName = tabName;
- myName = name;
- }
-
- public void addItem(@NotNull Item item) {
- myItems.add(item);
- }
-
- @Override
- public PaletteItem[] getItems() {
- return myItems.toArray(new PaletteItem[myItems.size()]);
- }
-
- @Override
- public String getName() {
- return myName;
- }
-
- @Override
- public String getTabName() {
- return myTabName;
- }
-
- @Override
- public ActionGroup getPopupActionGroup() {
- return null; // TODO: Auto-generated method stub
- }
-
- @Override
- public Object getData(Project project, String dataId) {
- return null; // TODO: Auto-generated method stub
- }
-
- @Override
- public void handleDrop(Project project, PaletteItem item, int index) {
- // TODO: Auto-generated method stub
- }
-}
\ No newline at end of file
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteContainer.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteContainer.java
similarity index 98%
rename from plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteContainer.java
rename to plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteContainer.java
index 27c19709ed79..2468bde9cc51 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteContainer.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteContainer.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.intellij.designer.palette2;
+package com.intellij.designer.palette;
import javax.swing.*;
import java.awt.*;
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteGroup.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteGroup.java
similarity index 96%
rename from plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteGroup.java
rename to plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteGroup.java
index 544e841edd6b..cc223095fdc4 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteGroup.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteGroup.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.intellij.designer.palette2;
+package com.intellij.designer.palette;
import java.util.ArrayList;
import java.util.List;
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteGroupComponent.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteGroupComponent.java
similarity index 97%
rename from plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteGroupComponent.java
rename to plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteGroupComponent.java
index 277b982d37d0..634b6006f32b 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteGroupComponent.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteGroupComponent.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.intellij.designer.palette2;
+package com.intellij.designer.palette;
import com.intellij.icons.AllIcons;
import com.intellij.util.ui.UIUtil;
@@ -28,12 +28,9 @@ import java.awt.event.KeyEvent;
* @author Alexander Lobas
*/
public class PaletteGroupComponent extends JCheckBox {
- private final PaletteGroup myGroup;
private PaletteItemsComponent myItemsComponent;
public PaletteGroupComponent(PaletteGroup group) {
- myGroup = group;
-
setText(group.getName());
setSelected(true);
setIcon(AllIcons.Nodes.TreeClosed);
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteItem.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItem.java
similarity index 94%
rename from plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteItem.java
rename to plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItem.java
index 08c38da4aa81..33f631320074 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteItem.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItem.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.intellij.designer.palette2;
+package com.intellij.designer.palette;
import javax.swing.*;
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteItemsComponent.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItemsComponent.java
similarity index 70%
rename from plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteItemsComponent.java
rename to plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItemsComponent.java
index 1c290a2ff5bf..61bcf90e8ec0 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteItemsComponent.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteItemsComponent.java
@@ -13,21 +13,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.intellij.designer.palette2;
+package com.intellij.designer.palette;
import com.intellij.ui.ColoredListCellRenderer;
import com.intellij.ui.SimpleTextAttributes;
import com.intellij.ui.components.JBList;
+import com.intellij.util.ui.UIUtil;
import javax.swing.*;
+import javax.swing.plaf.basic.BasicListUI;
import java.awt.*;
import java.awt.event.ActionEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
/**
* @author Alexander Lobas
*/
public class PaletteItemsComponent extends JBList {
private final PaletteGroup myGroup;
+ private int myBeforeClickSelectedRow = -1;
+ private boolean myNeedClearSelection;
+ private Integer myTempWidth;
public PaletteItemsComponent(PaletteGroup group) {
myGroup = group;
@@ -43,7 +51,8 @@ public class PaletteItemsComponent extends JBList {
return myGroup.getItems().get(index);
}
});
- setCellRenderer(new ColoredListCellRenderer() {
+
+ ColoredListCellRenderer renderer = new ColoredListCellRenderer() {
@Override
protected void customizeCellRenderer(JList list, Object value, int index, boolean selected, boolean hasFocus) {
clear();
@@ -52,16 +61,76 @@ public class PaletteItemsComponent extends JBList {
append(item.getTitle(), SimpleTextAttributes.REGULAR_ATTRIBUTES);
setToolTipText(item.getTooltip());
}
- });
+ };
+ renderer.getIpad().left = UIUtil.getTreeLeftChildIndent();
+ renderer.getIpad().right = UIUtil.getTreeRightChildIndent();
+ setCellRenderer(renderer);
setVisibleRowCount(0);
setLayoutOrientation(HORIZONTAL_WRAP);
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ addMouseListener(new MouseAdapter() {
+ @Override
+ public void mousePressed(MouseEvent e) {
+ myNeedClearSelection = SwingUtilities.isLeftMouseButton(e) &&
+ myBeforeClickSelectedRow >= 0 &&
+ locationToIndex(e.getPoint()) == myBeforeClickSelectedRow &&
+ !UIUtil.isControlKeyDown(e) && !e.isShiftDown();
+ }
+
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ if (SwingUtilities.isLeftMouseButton(e) &&
+ myBeforeClickSelectedRow >= 0 &&
+ locationToIndex(e.getPoint()) == myBeforeClickSelectedRow &&
+ !UIUtil.isControlKeyDown(e) && !e.isShiftDown() && myNeedClearSelection) {
+ clearSelection();
+ }
+ }
+ });
+
initActions();
}
- Integer myTempWidth;
+ @Override
+ public void updateUI() {
+ setUI(new BasicListUI() {
+ MouseListener myListener;
+
+ @Override
+ protected void updateLayoutState() {
+ super.updateLayoutState();
+
+ Insets insets = list.getInsets();
+ int listWidth = list.getWidth() - (insets.left + insets.right);
+ if (listWidth >= cellWidth) {
+ int columnCount = listWidth / cellWidth;
+ cellWidth = (columnCount == 0) ? 1 : listWidth / columnCount;
+ }
+ }
+
+ @Override
+ protected void installListeners() {
+ addMouseListener(myListener = new MouseAdapter() {
+ @Override
+ public void mousePressed(MouseEvent e) {
+ myBeforeClickSelectedRow = list.getSelectedIndex();
+ }
+ });
+ super.installListeners();
+ }
+
+ @Override
+ protected void uninstallListeners() {
+ if (myListener != null) {
+ removeMouseListener(myListener);
+ }
+ super.uninstallListeners();
+ }
+ });
+ invalidate();
+ }
public int getWidth() {
return (myTempWidth == null) ? super.getWidth() : myTempWidth.intValue();
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PalettePanel.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PalettePanel.java
new file mode 100644
index 000000000000..7ad81f93cfa8
--- /dev/null
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PalettePanel.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2000-2012 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.palette;
+
+import com.intellij.designer.designSurface.DesignerEditorPanel;
+import com.intellij.openapi.actionSystem.AnAction;
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.actionSystem.CustomShortcutSet;
+import com.intellij.ui.ScrollPaneFactory;
+import org.jetbrains.annotations.Nullable;
+
+import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import java.awt.*;
+import java.awt.event.KeyEvent;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author Alexander Lobas
+ */
+public class PalettePanel extends JPanel {
+ private final JPanel myPaletteContainer = new PaletteContainer();
+ private List myGroupComponents = Collections.emptyList();
+ private List myItemsComponents = Collections.emptyList();
+ private List myGroups = Collections.emptyList();
+ private DesignerEditorPanel myDesigner;
+ private final ListSelectionListener mySelectionListener = new ListSelectionListener() {
+ @Override
+ public void valueChanged(ListSelectionEvent event) {
+ notifySelection(event);
+ }
+ };
+
+ public PalettePanel() {
+ super(new GridLayout(1, 1));
+
+ JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myPaletteContainer);
+ scrollPane.setBorder(null);
+ add(scrollPane);
+
+ new AnAction() {
+ @Override
+ public void actionPerformed(AnActionEvent e) {
+ clearActiveItem();
+ }
+ }.registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)), scrollPane);
+ }
+
+ @Nullable
+ public PaletteItem getActiveItem() {
+ for (PaletteGroupComponent groupComponent : myGroupComponents) {
+ if (groupComponent.isSelected()) {
+ PaletteItem paletteItem = (PaletteItem)groupComponent.getItemsComponent().getSelectedValue();
+ if (paletteItem != null) {
+ return paletteItem;
+ }
+ }
+ }
+ return null;
+ }
+
+ public void clearActiveItem() {
+ if (getActiveItem() != null) {
+ for (PaletteItemsComponent itemsComponent : myItemsComponents) {
+ itemsComponent.clearSelection();
+ }
+ notifySelection(null);
+ }
+ }
+
+ public boolean isEmpty() {
+ return myGroups.isEmpty();
+ }
+
+ public void loadPalette(@Nullable DesignerEditorPanel designer) {
+ for (PaletteItemsComponent itemsComponent : myItemsComponents) {
+ itemsComponent.removeListSelectionListener(mySelectionListener);
+ }
+
+ myDesigner = designer;
+ myPaletteContainer.removeAll();
+
+ if (designer == null) {
+ myGroups = Collections.emptyList();
+ myGroupComponents = Collections.emptyList();
+ myItemsComponents = Collections.emptyList();
+ }
+ else {
+ myGroups = designer.getPaletteGroups();
+ myGroupComponents = new ArrayList();
+ myItemsComponents = new ArrayList();
+ }
+
+ for (PaletteGroup group : myGroups) {
+ PaletteGroupComponent groupComponent = new PaletteGroupComponent(group);
+ PaletteItemsComponent itemsComponent = new PaletteItemsComponent(group);
+
+ groupComponent.setItemsComponent(itemsComponent);
+ myPaletteContainer.add(groupComponent);
+ myPaletteContainer.add(itemsComponent);
+
+ myGroupComponents.add(groupComponent);
+
+ itemsComponent.addListSelectionListener(mySelectionListener);
+ myItemsComponents.add(itemsComponent);
+ }
+
+ myPaletteContainer.revalidate();
+ }
+
+ private void notifySelection(@Nullable ListSelectionEvent event) {
+ if (event != null) {
+ PaletteItemsComponent sourceItemsComponent = (PaletteItemsComponent)event.getSource();
+ for (int i = event.getFirstIndex(); i <= event.getLastIndex(); i++) {
+ if (sourceItemsComponent.isSelectedIndex(i)) {
+ for (PaletteItemsComponent itemsComponent : myItemsComponents) {
+ if (itemsComponent != sourceItemsComponent) {
+ itemsComponent.clearSelection();
+ }
+ }
+ break;
+ }
+ }
+ }
+ if (myDesigner != null) {
+ myDesigner.activatePaletteItem(getActiveItem());
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteToolWindowManager.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteToolWindowManager.java
similarity index 92%
rename from plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteToolWindowManager.java
rename to plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteToolWindowManager.java
index 9cbf68e810cc..965cdf8c7318 100644
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PaletteToolWindowManager.java
+++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette/PaletteToolWindowManager.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.intellij.designer.palette2;
+package com.intellij.designer.palette;
import com.intellij.designer.AbstractToolWindowManager;
import com.intellij.designer.designSurface.DesignerEditorPanel;
@@ -41,17 +41,13 @@ public class PaletteToolWindowManager extends AbstractToolWindowManager {
return project.getComponent(PaletteToolWindowManager.class);
}
- public PaletteItem getActiveItem() {
- return myToolWindowPanel.getActiveItem();
- }
-
public void clearActiveItem() {
myToolWindowPanel.clearActiveItem();
}
@Override
protected void initToolWindow() {
- myToolWindow = ToolWindowManager.getInstance(myProject).registerToolWindow("Palette2", false, ToolWindowAnchor.RIGHT, myProject, true);
+ myToolWindow = ToolWindowManager.getInstance(myProject).registerToolWindow("Palette\t", false, ToolWindowAnchor.RIGHT, myProject, true);
myToolWindow.setIcon(AllIcons.Toolwindows.ToolWindowPalette);
ContentManager contentManager = myToolWindow.getContentManager();
diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PalettePanel.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PalettePanel.java
deleted file mode 100644
index 9b6e12c64436..000000000000
--- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/palette2/PalettePanel.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright 2000-2012 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.palette2;
-
-import com.intellij.designer.designSurface.DesignerEditorPanel;
-import com.intellij.ui.ScrollPaneFactory;
-import org.jetbrains.annotations.Nullable;
-
-import javax.swing.*;
-import java.awt.*;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author Alexander Lobas
- */
-public class PalettePanel extends JPanel {
- private final JPanel myPaletteContainer = new PaletteContainer();
- private List myGroups = Collections.emptyList();
-
- public PalettePanel() {
- super(new GridLayout(1, 1));
- JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myPaletteContainer);
- scrollPane.setBorder(null);
- add(scrollPane);
- }
-
- public PaletteItem getActiveItem() {
- // XXX
- return null;
- }
-
- public void clearActiveItem() {
- // XXX
- }
-
- public boolean isEmpty() {
- return myGroups.isEmpty();
- }
-
- public void loadPalette(@Nullable DesignerEditorPanel designer) {
- myGroups = designer.getPaletteGroups();
- myPaletteContainer.removeAll();
-
- for (PaletteGroup group : myGroups) {
- PaletteGroupComponent groupComponent = new PaletteGroupComponent(group);
- PaletteItemsComponent itemsComponent = new PaletteItemsComponent(group);
-
- groupComponent.setItemsComponent(itemsComponent);
- myPaletteContainer.add(groupComponent);
- myPaletteContainer.add(itemsComponent);
- }
-
- myPaletteContainer.revalidate();
- }
-}
\ No newline at end of file