帆软报表设计器源代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.3 KiB

package com.fr.design.mainframe;
import com.fr.common.inputevent.InputEventBaseOnOS;
import javax.swing.JScrollBar;
import javax.swing.JViewport;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
/**
* @author Starryi
* @version 1.0
* Created by Starryi on 2021/9/24
*/
public class FormAreaMouseWheelHandler implements MouseWheelListener {
private final DesignerTranslateMouseWheelHandler translateMouseWheelHandler;
private final DesignerScaleMouseWheelHandler scaleMouseWheelHandler;
public FormAreaMouseWheelHandler(FormArea formArea) {
translateMouseWheelHandler = new DesignerTranslateMouseWheelHandler(new FormAreaScrollPaneAdapter(formArea));
scaleMouseWheelHandler = new DesignerScaleMouseWheelHandler(new FormAreaScalePaneAdapter(formArea), FormArea.SHOWVALMIN);
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
if (InputEventBaseOnOS.isControlDown(e)) {
scaleMouseWheelHandler.mouseWheelMoved(e);
} else {
translateMouseWheelHandler.mouseWheelMoved(e);
}
}
private static class FormAreaScalePaneAdapter implements DesignerScaleMouseWheelHandler.ScalePane {
private final FormArea formArea;
public FormAreaScalePaneAdapter(FormArea formArea) {
this.formArea = formArea;
}
@Override
public JFormSliderPane getSlidePane() {
return formArea.getSlidePane();
}
}
private static class FormAreaScrollPaneAdapter implements DesignerTranslateMouseWheelHandler.ScrollPane {
private final FormArea formArea;
private final JViewport viewport;
public FormAreaScrollPaneAdapter(FormArea formArea) {
this.formArea = formArea;
this.viewport = new JViewport();
}
@Override
public boolean isWheelScrollingEnabled() {
return true;
}
@Override
public JScrollBar getVerticalScrollBar() {
return formArea.getVerticalScrollBar();
}
@Override
public JScrollBar getHorizontalScrollBar() {
return formArea.getHorizontalScrollBar();
}
@Override
public JViewport getViewport() {
return this.viewport;
}
}
}