package com.baselet.standalone.gui;
import java.awt.AWTEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.JComboBox;
import com.baselet.diagram.CurrentDiagram;
import com.baselet.gui.CurrentGui;
public class ZoomListener implements ActionListener, MouseWheelListener {
@Override
public void actionPerformed(ActionEvent e) {
handleEvent(e);
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
handleEvent(e);
}
private void handleEvent(AWTEvent e) {
if (CurrentGui.getInstance().getGui() instanceof StandaloneGUI && CurrentDiagram.getInstance().getDiagramHandler() != null) {
// The offset is -1 (wheel up) or +1 (wheel down) or 0 (no wheel used)
int offset = 0;
if (e instanceof MouseWheelEvent) {
offset = ((MouseWheelEvent) e).getWheelRotation();
}
String zoomFactor = ((JComboBox) e.getSource()).getSelectedItem().toString();
zoomFactor = zoomFactor.substring(0, zoomFactor.length() - 2); // Cut the zoomvalue eg: "120%" to "12"
int newZoomFactor = Integer.parseInt(zoomFactor) + offset;
if (newZoomFactor > 0 && newZoomFactor < 21) {
CurrentDiagram.getInstance().getDiagramHandler().setGridAndZoom(newZoomFactor);
}
}
}
}