Added: #2370 Show/Hide guides, lock guides, clear guides actions from icon menu

This commit is contained in:
Jindra Petřík
2025-05-05 22:40:48 +02:00
parent fd114a10b7
commit 282320f061
9 changed files with 131 additions and 40 deletions
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.gui.player;
import com.jpexs.decompiler.flash.configuration.Configuration;
import com.jpexs.decompiler.flash.configuration.ConfigurationItemChangeListener;
import com.jpexs.decompiler.flash.gui.AppStrings;
import com.jpexs.decompiler.flash.gui.PopupButton;
import com.jpexs.decompiler.flash.gui.View;
import com.jpexs.decompiler.flash.gui.abc.SnapOptionsButton;
import java.awt.FlowLayout;
@@ -27,8 +28,11 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Objects;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JToggleButton;
/**
@@ -38,8 +42,9 @@ import javax.swing.JToggleButton;
public class ZoomPanel extends JPanel implements MediaDisplayListener {
private MediaDisplay display;
private JButton zoomFitButton;
private SnapOptionsButton snapOptionsButton;
private final JButton zoomFitButton;
private final SnapOptionsButton snapOptionsButton;
private PopupButton guidesOptionsButton;
private JToggleButton rulerButton;
private final JLabel percentLabel = new JLabel("100%");
private boolean zoomToFit = false;
@@ -63,19 +68,42 @@ public class ZoomPanel extends JPanel implements MediaDisplayListener {
JButton zoomNoneButton = new JButton(View.getIcon("zoomnone16"));
zoomNoneButton.addActionListener(this::zoomNoneButtonActionPerformed);
zoomNoneButton.setToolTipText(AppStrings.translate("button.zoomnone.hint"));
rulerButton = new JToggleButton(View.getIcon("ruler16"));
rulerButton.addActionListener(this::rulerActionPerformed);
rulerButton.setToolTipText(AppStrings.translate("button.ruler.hint"));
rulerButton.setSelected(Configuration.showRuler.get());
Configuration.showRuler.addListener(new ConfigurationItemChangeListener<Boolean>() {
@Override
public void configurationItemChanged(Boolean newValue) {
rulerButton.setSelected(newValue);
}
}
});
guidesOptionsButton = new PopupButton(View.getIcon("guides16")) {
@Override
protected JPopupMenu getPopupMenu() {
JPopupMenu menu = new JPopupMenu();
JCheckBoxMenuItem showGuidesMenuItem = new JCheckBoxMenuItem(AppStrings.translate("guides_options.show"));
showGuidesMenuItem.setSelected(Configuration.showGuides.get());
showGuidesMenuItem.addActionListener(ZoomPanel.this::guidesShowActionPerformed);
JCheckBoxMenuItem lockGuidesMenuItem = new JCheckBoxMenuItem(AppStrings.translate("guides_options.lock"));
lockGuidesMenuItem.setSelected(Configuration.lockGuides.get());
lockGuidesMenuItem.addActionListener(ZoomPanel.this::guidesLockActionPerformed);
JMenuItem clearGuidesMenuItem = new JMenuItem(AppStrings.translate("guides_options.clear"));
clearGuidesMenuItem.addActionListener(ZoomPanel.this::guidesClearActionPerformed);
menu.add(showGuidesMenuItem);
menu.add(lockGuidesMenuItem);
menu.add(clearGuidesMenuItem);
return menu;
}
};
guidesOptionsButton.setToolTipText(AppStrings.translate("button.guides_options.hint"));
snapOptionsButton = new SnapOptionsButton();
setLayout(new FlowLayout());
@@ -85,16 +113,31 @@ public class ZoomPanel extends JPanel implements MediaDisplayListener {
add(zoomNoneButton);
add(zoomFitButton);
add(rulerButton);
add(guidesOptionsButton);
add(snapOptionsButton);
display.addEventListener(this);
}
private void guidesShowActionPerformed(ActionEvent evt) {
JCheckBoxMenuItem source = (JCheckBoxMenuItem) evt.getSource();
Configuration.showGuides.set(source.isSelected());
}
private void guidesLockActionPerformed(ActionEvent evt) {
JCheckBoxMenuItem source = (JCheckBoxMenuItem) evt.getSource();
Configuration.lockGuides.set(source.isSelected());
}
private void guidesClearActionPerformed(ActionEvent evt) {
display.clearGuides();
}
private void rulerActionPerformed(ActionEvent evt) {
JToggleButton toggleButton = (JToggleButton) evt.getSource();
Configuration.showRuler.set(toggleButton.isSelected());
}
private void zoomInButtonActionPerformed(ActionEvent evt) {
double currentRealZoom = getRealZoom();
if (currentRealZoom >= MAX_ZOOM) {
@@ -178,6 +221,7 @@ public class ZoomPanel extends JPanel implements MediaDisplayListener {
percentLabel.setVisible(zoom != null);
snapOptionsButton.setVisible(display.canUseSnapping());
rulerButton.setVisible(display.canHaveRuler());
guidesOptionsButton.setVisible(display.canHaveRuler());
Zoom currentZoom = new Zoom();
currentZoom.fit = zoomToFit;
currentZoom.value = realZoom;