diff --git a/CHANGELOG.md b/CHANGELOG.md index f41178921..737d8cdd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. - ProductInfo tag information display - DebugId tag proper display and editation - [#1564], [#1676], [#1697], [#1893] Display of DefineVideoStream tags with VLC player +- List of treenode subitems on otherwise empty panel (with 32x32 icons) ### Fixed - [#1897] Close menu button without selecting specific item diff --git a/src/com/jpexs/decompiler/flash/gui/FolderListPanel.java b/src/com/jpexs/decompiler/flash/gui/FolderListPanel.java new file mode 100644 index 000000000..47735f4e9 --- /dev/null +++ b/src/com/jpexs/decompiler/flash/gui/FolderListPanel.java @@ -0,0 +1,265 @@ +/* + * Copyright (C) 2022 JPEXS + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.jpexs.decompiler.flash.gui; + +import com.jpexs.decompiler.flash.configuration.Configuration; +import com.jpexs.decompiler.flash.gui.tagtree.AbstractTagTree; +import com.jpexs.decompiler.flash.tags.Tag; +import com.jpexs.decompiler.flash.tags.base.CharacterTag; +import com.jpexs.decompiler.flash.treeitems.TreeItem; +import com.jpexs.helpers.SerializableImage; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Rectangle; +import java.awt.SystemColor; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.WeakHashMap; +import javax.swing.Icon; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JViewport; +import javax.swing.SwingUtilities; +import org.pushingpixels.substance.api.ColorSchemeAssociationKind; +import org.pushingpixels.substance.api.ComponentState; +import org.pushingpixels.substance.api.DecorationAreaType; +import org.pushingpixels.substance.api.SubstanceLookAndFeel; +import org.pushingpixels.substance.api.SubstanceSkin; + +/** + * + * @author JPEXS + */ +public class FolderListPanel extends JPanel { + private List items; + + private int selectedIndex = -1; + + public Map selectedItems = new HashMap<>(); + + + private static final int PREVIEW_SIZE = 150; + + private static final int BORDER_SIZE = 5; + + private static final int LABEL_HEIGHT = 20; + + private static final int CELL_HEIGHT = 2 * BORDER_SIZE + PREVIEW_SIZE + LABEL_HEIGHT; + + private static final int CELL_WIDTH = 2 * BORDER_SIZE + PREVIEW_SIZE; + + + private static final Map ICONS; + + protected Map> missingNeededCharacters = new WeakHashMap<>(); + + private MainPanel mainPanel; + + static { + ICONS = new HashMap<>(); + for (TreeNodeType treeNodeType : TreeNodeType.values()) { + if (treeNodeType != TreeNodeType.UNKNOWN) { + String tagTypeStr = treeNodeType.toString().toLowerCase(Locale.ENGLISH).replace("_", ""); + try{ + ICONS.put(treeNodeType, View.getIcon(tagTypeStr + "32")); + }catch(NullPointerException npe) { + System.err.println("ICON "+tagTypeStr + "32.png does not exist!"); + ICONS.put(treeNodeType, View.getIcon("about32")); + } + } + } + } + + private static final SerializableImage noImage = new SerializableImage(PREVIEW_SIZE, PREVIEW_SIZE, BufferedImage.TYPE_INT_ARGB); + + static { + noImage.fillTransparent(); + } + + public FolderListPanel(final MainPanel mainPanel, List items) { + this.items = items; + this.mainPanel = mainPanel; + + addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() > 1) { + if (selectedIndex > -1) { + mainPanel.setTagTreeSelectedNode(mainPanel.getCurrentTree(), FolderListPanel.this.items.get(selectedIndex)); + } + } + } + + @Override + public void mousePressed(MouseEvent e) { + int width = getWidth(); + + int cols = width / CELL_WIDTH; + int rows = (int) Math.ceil(FolderListPanel.this.items.size() / (float) cols); + int x = e.getX() / CELL_WIDTH; + int y = e.getY() / CELL_HEIGHT; + int index = y * cols + x; + if (index >= FolderListPanel.this.items.size()) { + return; + } + + if (SwingUtilities.isLeftMouseButton(e) || selectedItems.isEmpty()) { + if (!e.isControlDown()) { + selectedItems.clear(); + } + int oldSelectedIndex = selectedIndex; + selectedIndex = index; + + if (e.isShiftDown() && oldSelectedIndex > -1) { + int minindex = Math.min(selectedIndex, oldSelectedIndex); + int maxindex = Math.max(selectedIndex, oldSelectedIndex); + for (int i = minindex; i <= maxindex; i++) { + selectedItems.put(i, FolderListPanel.this.items.get(i)); + } + selectedIndex = oldSelectedIndex; + } else { + TreeItem ti = FolderListPanel.this.items.get(index); + if (!selectedItems.containsKey(selectedIndex)) { + selectedItems.put(selectedIndex, ti); + } else { + selectedItems.remove(selectedIndex); + selectedIndex = -1; + } + } + } + + if (SwingUtilities.isRightMouseButton(e)) { + mainPanel.getContextPopupMenu().update(new ArrayList<>(selectedItems.values())); + mainPanel.getContextPopupMenu().show(FolderListPanel.this, e.getX(), e.getY()); + } + repaint(); + } + }); + } + + public synchronized void setItems(List items) { + this.items = items; + revalidate(); + repaint(); + selectedItems.clear(); + selectedIndex = -1; + ((JScrollPane)getParent().getParent()).getVerticalScrollBar().setValue(0); + } + + public void clear() { + items = new ArrayList<>(); + selectedItems.clear(); + selectedIndex = -1; + } + + @Override + public Dimension getPreferredSize() { + int width = getParent().getSize().width - 1; + int cols = width / CELL_WIDTH; + int rows = (int) Math.ceil(items.size() / (float) cols); + int height = rows * CELL_HEIGHT; + int prefWidth = cols * CELL_WIDTH; + return new Dimension(prefWidth, height); + } + + @Override + public void paint(Graphics g) { + super.paint(g); + Rectangle r = getVisibleRect(); + int width = getWidth(); + int cols = width / CELL_WIDTH; + int start_y = r.y / CELL_HEIGHT; + JLabel l = new JLabel(); + Font f = l.getFont().deriveFont(AffineTransform.getScaleInstance(0.8, 0.8)); + int finish_y = (int) Math.ceil((r.y + r.height) / (float) CELL_HEIGHT); + Color color; + Color selectedColor; + Color selectedTextColor; + Color borderColor; + Color textColor; + if (Configuration.useRibbonInterface.get()) { + SubstanceSkin skin = SubstanceLookAndFeel.getCurrentSkin(); + color = skin.getColorScheme(DecorationAreaType.GENERAL, ColorSchemeAssociationKind.FILL, ComponentState.ENABLED).getBackgroundFillColor(); + selectedColor = skin.getColorScheme(DecorationAreaType.GENERAL, ColorSchemeAssociationKind.FILL, ComponentState.ROLLOVER_SELECTED).getBackgroundFillColor(); + borderColor = skin.getColorScheme(DecorationAreaType.GENERAL, ColorSchemeAssociationKind.BORDER, ComponentState.ROLLOVER_SELECTED).getUltraDarkColor(); + textColor = skin.getColorScheme(DecorationAreaType.GENERAL, ColorSchemeAssociationKind.FILL, ComponentState.ENABLED).getForegroundColor(); + selectedTextColor = skin.getColorScheme(DecorationAreaType.GENERAL, ColorSchemeAssociationKind.FILL, ComponentState.ROLLOVER_SELECTED).getForegroundColor(); + } else { + color = SystemColor.control; + selectedColor = SystemColor.textHighlight; + borderColor = SystemColor.controlShadow; + textColor = SystemColor.controlText; + selectedTextColor = SystemColor.textHighlightText; + } + + for (int y = start_y; y <= finish_y; y++) { + for (int x = 0; x < cols; x++) { + int index = y * cols + x; + if (index < items.size()) { + + g.setColor(color); + if (selectedItems.containsKey(index)) { + g.setColor(selectedColor); + } + g.fillRect(x * CELL_WIDTH, y * CELL_HEIGHT, CELL_WIDTH, CELL_HEIGHT); + + TreeItem treeItem = items.get(index); + + TreeNodeType type = AbstractTagTree.getTreeNodeType(treeItem); + Icon icon = ICONS.get(type); + icon.paintIcon(l, g, x * CELL_WIDTH + BORDER_SIZE + PREVIEW_SIZE / 2 - icon.getIconWidth() / 2, y * CELL_HEIGHT + BORDER_SIZE + PREVIEW_SIZE / 2 - icon.getIconHeight() / 2); + String s; + if (treeItem instanceof Tag) { + s = ((Tag) treeItem).getTagName(); + if (treeItem instanceof CharacterTag) { + s = s + " (" + ((CharacterTag) treeItem).getCharacterId() + ")"; + } + } else { + s = treeItem.toString(); + } + + int itemIndex = mainPanel.getCurrentTree().getFullModel().getItemIndex(treeItem); + if (itemIndex > 1) { + s += " [" + itemIndex + "]"; + } + + g.setFont(f); + g.setColor(borderColor); + g.drawLine(x * CELL_WIDTH, y * CELL_HEIGHT + BORDER_SIZE + PREVIEW_SIZE, x * CELL_WIDTH + CELL_WIDTH, y * CELL_HEIGHT + BORDER_SIZE + PREVIEW_SIZE); + g.drawRect(x * CELL_WIDTH, y * CELL_HEIGHT, CELL_WIDTH, CELL_HEIGHT); + g.setColor(textColor); + if (selectedItems.containsKey(index)) { + g.setColor(selectedTextColor); + } + g.drawString(s, x * CELL_WIDTH + BORDER_SIZE, y * CELL_HEIGHT + BORDER_SIZE + PREVIEW_SIZE + LABEL_HEIGHT); + + } + } + } + } +} diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 348f52538..6a49b14b7 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -322,12 +322,17 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se private final JPanel displayPanel; public FolderPreviewPanel folderPreviewPanel; + + public FolderListPanel folderListPanel; private boolean isWelcomeScreen = true; private static final String CARDPREVIEWPANEL = "Preview card"; private static final String CARDFOLDERPREVIEWPANEL = "Folder preview card"; + + private static final String CARDFOLDERLISTPANEL = "Folder list card"; + private static final String CARDEMPTYPANEL = "Empty card"; @@ -872,6 +877,15 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se return folderPreviewCard; } + private JPanel createFolderListCard() { + JPanel folderListCard = new JPanel(new BorderLayout()); + folderListPanel = new FolderListPanel(this, new ArrayList<>()); + folderListCard.add(new FasterScrollPane(folderListPanel), BorderLayout.CENTER); + + return folderListCard; + } + + private JPanel createDumpPreviewCard() { JPanel dumpViewCard = new JPanel(new BorderLayout()); dumpViewPanel = new DumpViewPanel(dumpTree); @@ -1022,6 +1036,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se displayPanel.add(previewPanel, CARDPREVIEWPANEL); displayPanel.add(createFolderPreviewCard(), CARDFOLDERPREVIEWPANEL); + displayPanel.add(createFolderListCard(), CARDFOLDERLISTPANEL); displayPanel.add(createDumpPreviewCard(), CARDDUMPVIEW); headerPanel = new HeaderInfoPanel(); @@ -3716,6 +3731,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se previewPanel.clear(); headerPanel.clear(); folderPreviewPanel.clear(); + folderListPanel.clear(); if (abcPanel != null) { abcPanel.clearSwf(); } @@ -4824,6 +4840,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } folderPreviewPanel.clear(); + folderListPanel.clear(); previewPanel.clear(); stopFlashPlayer(); @@ -4961,7 +4978,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se showPreview(treeItem, previewPanel, -1, null); showCard(CARDPREVIEWPANEL); } else if (!(treeItem instanceof ScriptPack)) { - showCard(CARDEMPTYPANEL); + showFolderList(treeItem); } if (oldItem instanceof TreeRoot) { pinsPanel.setCurrent(null); @@ -5075,6 +5092,10 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } private void showFolderPreview(FolderItem item) { + if (item.getName().equals(TagTreeModel.FOLDER_OTHERS)) { + showFolderList(item); + return; + } List folderPreviewItems = new ArrayList<>(); String folderName = item.getName(); SWF swf = item.swf; @@ -5083,6 +5104,12 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se folderPreviewPanel.setItems(folderPreviewItems); showCard(CARDFOLDERPREVIEWPANEL); } + + private void showFolderList(TreeItem item) { + List items = new ArrayList<>(getCurrentTree().getFullModel().getAllChildren(item)); + folderListPanel.setItems(items); + showCard(CARDFOLDERLISTPANEL); + } private boolean isFreeing; diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/abc32.png b/src/com/jpexs/decompiler/flash/gui/graphics/abc32.png new file mode 100644 index 000000000..798ea77c8 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/abc32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/as32.png b/src/com/jpexs/decompiler/flash/gui/graphics/as32.png new file mode 100644 index 000000000..6ce780011 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/as32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/asbutton32.png b/src/com/jpexs/decompiler/flash/gui/graphics/asbutton32.png new file mode 100644 index 000000000..adc3aca6d Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/asbutton32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/asclass32.png b/src/com/jpexs/decompiler/flash/gui/graphics/asclass32.png new file mode 100644 index 000000000..e30a0642e Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/asclass32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/asclip32.png b/src/com/jpexs/decompiler/flash/gui/graphics/asclip32.png new file mode 100644 index 000000000..401ceb566 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/asclip32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/asconst32.png b/src/com/jpexs/decompiler/flash/gui/graphics/asconst32.png new file mode 100644 index 000000000..f1c6de8a3 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/asconst32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/asframe32.png b/src/com/jpexs/decompiler/flash/gui/graphics/asframe32.png new file mode 100644 index 000000000..cf58a8638 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/asframe32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/asfunction32.png b/src/com/jpexs/decompiler/flash/gui/graphics/asfunction32.png new file mode 100644 index 000000000..1b7852b7f Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/asfunction32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/asinit32.png b/src/com/jpexs/decompiler/flash/gui/graphics/asinit32.png new file mode 100644 index 000000000..61d99caf7 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/asinit32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/asinterface32.png b/src/com/jpexs/decompiler/flash/gui/graphics/asinterface32.png new file mode 100644 index 000000000..168def2c9 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/asinterface32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/asvar32.png b/src/com/jpexs/decompiler/flash/gui/graphics/asvar32.png new file mode 100644 index 000000000..cb81995e1 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/asvar32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/binarydata32.png b/src/com/jpexs/decompiler/flash/gui/graphics/binarydata32.png new file mode 100644 index 000000000..cb059cfa3 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/binarydata32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/bundlebinary32.png b/src/com/jpexs/decompiler/flash/gui/graphics/bundlebinary32.png new file mode 100644 index 000000000..bcbf84846 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/bundlebinary32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/bundleiggy32.png b/src/com/jpexs/decompiler/flash/gui/graphics/bundleiggy32.png new file mode 100644 index 000000000..b84314bb3 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/bundleiggy32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/bundleswc32.png b/src/com/jpexs/decompiler/flash/gui/graphics/bundleswc32.png new file mode 100644 index 000000000..45c9edfe2 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/bundleswc32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/bundlezip32.png b/src/com/jpexs/decompiler/flash/gui/graphics/bundlezip32.png new file mode 100644 index 000000000..f37bb3efe Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/bundlezip32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/button32.png b/src/com/jpexs/decompiler/flash/gui/graphics/button32.png new file mode 100644 index 000000000..281545f40 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/button32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/buttonrecord32.png b/src/com/jpexs/decompiler/flash/gui/graphics/buttonrecord32.png new file mode 100644 index 000000000..0aae59e1b Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/buttonrecord32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/end32.png b/src/com/jpexs/decompiler/flash/gui/graphics/end32.png new file mode 100644 index 000000000..e29637703 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/end32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/error32.png b/src/com/jpexs/decompiler/flash/gui/graphics/error32.png new file mode 100644 index 000000000..8270104d4 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/error32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/fileattributes32.png b/src/com/jpexs/decompiler/flash/gui/graphics/fileattributes32.png new file mode 100644 index 000000000..7ae33c66b Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/fileattributes32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/flash32.png b/src/com/jpexs/decompiler/flash/gui/graphics/flash32.png new file mode 100644 index 000000000..3de371311 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/flash32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/folder32.png b/src/com/jpexs/decompiler/flash/gui/graphics/folder32.png new file mode 100644 index 000000000..f37bb3efe Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/folder32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/folderopen32.png b/src/com/jpexs/decompiler/flash/gui/graphics/folderopen32.png new file mode 100644 index 000000000..f37bb3efe Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/folderopen32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/font32.png b/src/com/jpexs/decompiler/flash/gui/graphics/font32.png new file mode 100644 index 000000000..5b19cecb4 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/font32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/frame32.png b/src/com/jpexs/decompiler/flash/gui/graphics/frame32.png new file mode 100644 index 000000000..70e5a6896 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/frame32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/header32.png b/src/com/jpexs/decompiler/flash/gui/graphics/header32.png new file mode 100644 index 000000000..464caf278 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/header32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/image32.png b/src/com/jpexs/decompiler/flash/gui/graphics/image32.png new file mode 100644 index 000000000..adcd7b26e Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/image32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/metadata32.png b/src/com/jpexs/decompiler/flash/gui/graphics/metadata32.png new file mode 100644 index 000000000..9c48267bd Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/metadata32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/morphshape32.png b/src/com/jpexs/decompiler/flash/gui/graphics/morphshape32.png new file mode 100644 index 000000000..9b53faf96 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/morphshape32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/movie32.png b/src/com/jpexs/decompiler/flash/gui/graphics/movie32.png new file mode 100644 index 000000000..0cd43b498 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/movie32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/othertag32.png b/src/com/jpexs/decompiler/flash/gui/graphics/othertag32.png new file mode 100644 index 000000000..f2ef7dda9 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/othertag32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/package32.png b/src/com/jpexs/decompiler/flash/gui/graphics/package32.png new file mode 100644 index 000000000..448681eaf Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/package32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/placeobject32.png b/src/com/jpexs/decompiler/flash/gui/graphics/placeobject32.png new file mode 100644 index 000000000..60a7a2910 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/placeobject32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/removeobject32.png b/src/com/jpexs/decompiler/flash/gui/graphics/removeobject32.png new file mode 100644 index 000000000..30a45b821 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/removeobject32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/scalinggrid32.png b/src/com/jpexs/decompiler/flash/gui/graphics/scalinggrid32.png new file mode 100644 index 000000000..2c8606b6d Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/scalinggrid32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/setbackgroundcolor32.png b/src/com/jpexs/decompiler/flash/gui/graphics/setbackgroundcolor32.png new file mode 100644 index 000000000..f8e5b8ce7 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/setbackgroundcolor32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/shape32.png b/src/com/jpexs/decompiler/flash/gui/graphics/shape32.png new file mode 100644 index 000000000..f258b2609 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/shape32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/showframe32.png b/src/com/jpexs/decompiler/flash/gui/graphics/showframe32.png new file mode 100644 index 000000000..c61fb0542 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/showframe32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/sprite32.png b/src/com/jpexs/decompiler/flash/gui/graphics/sprite32.png new file mode 100644 index 000000000..b67b1b461 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/sprite32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/text32.png b/src/com/jpexs/decompiler/flash/gui/graphics/text32.png new file mode 100644 index 000000000..dc0b32eea Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/text32.png differ