Browse Source

REPORT-2897 9.0设计器修改

缩放条部分-增加键盘快捷键
master
MoMeak 7 years ago
parent
commit
4800935232
  1. 2
      designer/src/com/fr/design/mainframe/ElementCasePane.java
  2. 35
      designer/src/com/fr/design/mainframe/ReportComponentComposite.java
  3. 100
      designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java
  4. 149
      designer_base/src/com/fr/design/mainframe/JFormSliderPane.java
  5. 97
      designer_base/src/com/fr/design/mainframe/JSliderPane.java
  6. 38
      designer_form/src/com/fr/design/mainframe/FormArea.java
  7. 71
      designer_form/src/com/fr/design/mainframe/JForm.java

2
designer/src/com/fr/design/mainframe/ElementCasePane.java

@ -242,6 +242,8 @@ public abstract class ElementCasePane<T extends TemplateElementCase> extends Tar
initFormatBrush();
}
public int getMenuState() {
return DesignState.WORK_SHEET;
}

35
designer/src/com/fr/design/mainframe/ReportComponentComposite.java

@ -1,8 +1,7 @@
package com.fr.design.mainframe;
import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.JComponent;
@ -51,6 +50,8 @@ public class ReportComponentComposite extends JComponent {
private JSliderPane jSliderContainer;
private boolean isCtrl = false;
/**
* Constructor with workbook..
@ -67,8 +68,38 @@ public class ReportComponentComposite extends JComponent {
this.add(createSouthControlPane(), BorderLayout.SOUTH);
jSliderContainer.getShowVal().addChangeListener(showValSpinnerChangeListener);
jSliderContainer.getSelfAdaptButton().addItemListener(selfAdaptButtonItemListener);
this.centerCardPane.editingComponet.elementCasePane.getGrid().addMouseWheelListener(showValSpinnerMouseWheelListener);
this.centerCardPane.editingComponet.elementCasePane.getGrid().addKeyListener(showValSpinnerKeyListener);
}
KeyListener showValSpinnerKeyListener = new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if( e.getKeyText(e.getKeyCode()).toLowerCase().equals("ctrl")){
isCtrl = true ;
}
}
@Override
public void keyReleased(KeyEvent e) {
isCtrl = false ;
}
};
MouseWheelListener showValSpinnerMouseWheelListener = new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
if (isCtrl){
int dir = e.getWheelRotation();
int old_resolution = (int) jSliderContainer.getShowVal().getValue();
jSliderContainer.getShowVal().setValue(old_resolution - (dir * MIN));
}
}
};
ChangeListener showValSpinnerChangeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {

100
designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java

@ -1,26 +1,27 @@
package com.fr.design.mainframe.form;
import com.fr.base.DynamicUnitList;
import com.fr.base.ScreenResolution;
import com.fr.design.cell.bar.DynamicScrollBar;
import com.fr.design.event.TargetModifiedEvent;
import com.fr.design.event.TargetModifiedListener;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.gui.ispinner.UIBasicSpinner;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.BaseJForm;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JForm;
import com.fr.design.mainframe.JSliderPane;
import com.fr.design.mainframe.*;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.form.FormElementCaseContainerProvider;
import com.fr.form.FormElementCaseProvider;
import com.fr.grid.Grid;
import com.fr.grid.GridUtils;
import com.fr.report.ReportHelper;
import com.fr.report.worksheet.FormElementCase;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.*;
/**
* 整个FormElementCase编辑区域 包括滚动条中间的grid或者聚合块下面的sheetTab
@ -36,7 +37,7 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
private FormTabPane sheetNameTab;
private JPanel hbarContainer;
private JSliderPane jSliderContainer;
private boolean isCtrl = false;
public FormReportComponentComposite(BaseJForm jform, FormElementCaseDesigner elementCaseDesign, FormElementCaseContainerProvider ecContainer) {
this.jForm = jform;
@ -47,9 +48,42 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
this.add(createSouthControlPane(), BorderLayout.SOUTH);
jSliderContainer.getShowVal().addChangeListener(showValSpinnerChangeListener);
jSliderContainer.getSelfAdaptButton().addItemListener(selfAdaptButtonItemListener);
((JForm)this.jForm).getFormDesign().getArea().addMouseWheelListener(showValSpinnerMouseWheelListener);
((JForm)this.jForm).getFormDesign().getArea().addKeyListener(showValSpinnerKeyListener);
this.elementCaseDesigner.elementCasePane.getGrid().addMouseWheelListener(showValSpinnerMouseWheelListener);
this.elementCaseDesigner.elementCasePane.getGrid().addKeyListener(showValSpinnerKeyListener);
elementCaseDesigner.addTargetModifiedListener(this);
}
KeyListener showValSpinnerKeyListener = new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if( e.getKeyText(e.getKeyCode()).toLowerCase().equals("ctrl")){
isCtrl = true ;
}
}
@Override
public void keyReleased(KeyEvent e) {
isCtrl = false ;
}
};
MouseWheelListener showValSpinnerMouseWheelListener = new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
if (isCtrl){
int dir = e.getWheelRotation();
int old_resolution = (int) jSliderContainer.getShowVal().getValue();
jSliderContainer.getShowVal().setValue(old_resolution - (dir * MIN));
}
}
};
ChangeListener showValSpinnerChangeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
@ -57,8 +91,8 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
value = value > MAX ? MAX : value;
value = value < MIN ? MIN : value;
int resolution = (int) (ScreenResolution.getScreenResolution()*value/HUND);
JForm jf = (JForm) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setScale(resolution);
setScale(resolution);
// HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().setScale(resolution);
}
};
@ -66,7 +100,7 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
@Override
public void itemStateChanged(ItemEvent e) {
if (jSliderContainer.getSelfAdaptButton().isSelected()){
int resolution = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().selfAdaptUpdate();
int resolution = selfAdaptUpdate();
jSliderContainer.getShowVal().setValue(resolution*HUND/ScreenResolution.getScreenResolution());
}
}
@ -74,6 +108,52 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
private java.util.List<TargetModifiedListener> targetModifiedList = new java.util.ArrayList<TargetModifiedListener>();
private void setScale(int resolution){
JForm jForm = (JForm) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
ElementCasePane elementCasePane = ((FormReportComponentComposite)jForm.getReportComposite()).elementCaseDesigner.getEditingElementCasePane();
elementCasePane.setResolution(resolution);
elementCasePane.getGrid().getGridMouseAdapter().setResolution(resolution);
elementCasePane.getGrid().setResolution(resolution);
//更新Grid
Grid grid = elementCasePane.getGrid();
DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(elementCasePane.getEditingElementCase());
DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(elementCasePane.getEditingElementCase());
grid.setVerticalExtent(GridUtils.getExtentValue(0, rowHeightList, grid.getHeight(), resolution));
grid.setHorizontalExtent(GridUtils.getExtentValue(0, columnWidthList, grid.getWidth(), resolution));
elementCasePane.getGrid().updateUI();
//更新Column和Row
((DynamicScrollBar)elementCasePane.getVerticalScrollBar()).setDpi(resolution);
((DynamicScrollBar)elementCasePane.getHorizontalScrollBar()).setDpi(resolution);
elementCasePane.getGridColumn().setResolution(resolution);
elementCasePane.getGridColumn().updateUI();
elementCasePane.getGridRow().setResolution(resolution);
elementCasePane.getGridRow().updateUI();
}
private int selfAdaptUpdate(){
JForm jForm = (JForm) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (jForm.resolution == 0){
jForm.resolution = ScreenResolution.getScreenResolution();
}
ElementCasePane elementCasePane = ((FormReportComponentComposite)jForm.getReportComposite()).elementCaseDesigner.getEditingElementCasePane();
ElementCasePane reportPane = elementCasePane.getGrid().getElementCasePane();
int column = reportPane.getSelection().getSelectedColumns()[0];
double columnLength = reportPane.getSelection().getSelectedColumns().length;
double columnExtent = reportPane.getGrid().getHorizontalExtent();
int row = reportPane.getSelection().getSelectedRows()[0];
double rowLength = reportPane.getSelection().getSelectedRows().length;
double rowExtent = reportPane.getGrid().getVerticalExtent();
if (columnLength == 0||rowLength == 0){
return jForm.resolution;
}
double time =(columnExtent/columnLength)<(rowExtent/rowLength) ? (columnExtent/columnLength) : (rowExtent/rowLength);
if (reportPane.isHorizontalScrollBarVisible()) {
reportPane.getVerticalScrollBar().setValue(row);
reportPane.getHorizontalScrollBar().setValue(column);
}
return (int) (time * elementCasePane.getGrid().getResolution());
}
/**
* 添加目标改变的监听
* @param targetModifiedListener 目标改变事件

149
designer_base/src/com/fr/design/mainframe/JFormSliderPane.java

@ -29,21 +29,19 @@ public class JFormSliderPane extends JPanel {
private static final double ONEPOINTEIGHT = 1.8;
private static final int SIX = 6;
private static final int TEN = 10;
private static final int ONEEIGHT = 18;
private static final int FONTSIZE = 14;
private static final int SPINNERWIDTH= 45;
private static final int SPINNERHEIGHT = 20;
private static final int TWOFIVE = 25;
private static final int FOURTEN = 40;
private static final int HALFHUNDRED = 50;
private static final int ONE_EIGHT = 18;
private static final int FONT_SIZE = 14;
private static final int SPINNER_WIDTH= 45;
private static final int SPINNER_HEIGHT = 20;
private static final int HALF_HUNDRED = 50;
private static final int HUNDRED = 100;
private static final int TWOHUNDRED = 200;
private static final int THREEHUNDRED = 300;
private static final int FOURHUNDRED = 400;
private static final int DIALOGWIDTH = 150;
private static final int DIALOGHEIGHT = 220;
private static final int SHOWVALBUTTONWIDTH = 70;
private static final int SHOWVALBUTTONHEIGHTH = 25;
private static final int TWO_HUNDRED = 200;
private static final int THREE_HUNDRED = 300;
private static final int FOUR_HUNDRED = 400;
private static final int DIALOG_WIDTH = 150;
private static final int DIALOG_HEIGHT = 240;
private static final int SHOWVALBUTTON_WIDTH = 70;
private static final int SHOWVALBUTTON_HEIGHTH = 25;
public int showValue = 100;
public double resolutionTimes = 1.0;
private static JFormSliderPane THIS;
@ -71,14 +69,14 @@ public class JFormSliderPane extends JPanel {
public JFormSliderPane() {
this.setLayout(new BorderLayout());
slider = new UISlider(0,HUNDRED,HALFHUNDRED);
slider = new UISlider(0,HUNDRED,HALF_HUNDRED);
slider.setUI(new JSliderPaneUI(slider));
slider.addChangeListener(listener);
showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, TEN, FOURHUNDRED, 1));
showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, TEN, FOUR_HUNDRED, 1));
showValSpinner.setEnabled(true);
showValSpinner.addChangeListener(showValSpinnerChangeListener);
showValSpinner.setPreferredSize(new Dimension(SPINNERWIDTH, SPINNERHEIGHT));
showValSpinner.setPreferredSize(new Dimension(SPINNER_WIDTH, SPINNER_HEIGHT));
//MoMeak:控制只能输入10-400,但是用起来感觉不舒服,先注释掉吧
// JSpinner.NumberEditor editor = new JSpinner.NumberEditor(showValSpinner, "0");
// showValSpinner.setEditor(editor);
@ -96,7 +94,7 @@ public class JFormSliderPane extends JPanel {
showValButton = new UIButton(showValSpinner.getValue()+"%");
showValButton.setBorderPainted(false);
showValButton.setPreferredSize(new Dimension(SHOWVALBUTTONWIDTH,SHOWVALBUTTONHEIGHTH));
showValButton.setPreferredSize(new Dimension(SHOWVALBUTTON_WIDTH,SHOWVALBUTTON_HEIGHTH));
showValButton.addActionListener(showValButtonActionListener);
initUIRadioButton();
@ -107,7 +105,7 @@ public class JFormSliderPane extends JPanel {
panel.add(upButton);
panel.add(showValButton);
this.add(panel,BorderLayout.NORTH);
this.setBounds(0,0,THREEHUNDRED,ONEEIGHT);
this.setBounds(0,0,THREE_HUNDRED,ONE_EIGHT);
}
public static final JFormSliderPane getInstance() {
@ -166,7 +164,7 @@ public class JFormSliderPane extends JPanel {
JPanel spinnerPanel = new JPanel(new FlowLayout());
spinnerPanel.add(showValSpinner);
UILabel percent = new UILabel("%");
percent.setFont(new Font("Dialog", Font.PLAIN, FONTSIZE));
percent.setFont(new Font("Dialog", Font.PLAIN, FONT_SIZE));
spinnerPanel.add(percent);
return spinnerPanel;
}
@ -184,6 +182,14 @@ public class JFormSliderPane extends JPanel {
int val = (int) ((UIBasicSpinner)e.getSource()).getValue();
isButtonOrIsTxt = true;
resolutionTimes = divide(showValue,100,2);
if (val > FOUR_HUNDRED){
showValSpinner.setValue(FOUR_HUNDRED);
val = FOUR_HUNDRED;
}
if (val < TEN){
showValSpinner.setValue(TEN);
val = TEN;
}
refreshSlider(val);
refreshBottun(val);
}
@ -224,11 +230,11 @@ public class JFormSliderPane extends JPanel {
private void refreshSlider(int val){
showValue = val;
if (showValue >HUNDRED){
slider.setValue((int)(showValue+TWOHUNDRED)/SIX);
slider.setValue((int)(showValue+TWO_HUNDRED)/SIX);
}else if (showValue <HUNDRED){
slider.setValue((int)((showValue-TEN)/ONEPOINTEIGHT));
}else if (showValue == HUNDRED){
slider.setValue(HALFHUNDRED);
slider.setValue(HALF_HUNDRED);
}
}
@ -268,12 +274,12 @@ public class JFormSliderPane extends JPanel {
}
if(e.getActionCommand().equals("more")){
int newUpVal = showValue + TEN;
if (newUpVal <= FOURHUNDRED ){
if (newUpVal <= FOUR_HUNDRED ){
showValue = newUpVal;
showValSpinner.setValue(newUpVal);
}else {
showValue = newUpVal;
showValSpinner.setValue(FOURHUNDRED);
showValSpinner.setValue(FOUR_HUNDRED);
}
}
isButtonOrIsTxt = true;
@ -284,12 +290,12 @@ public class JFormSliderPane extends JPanel {
private void getTimes(int value){
if (value == HALFHUNDRED){
if (value == HALF_HUNDRED){
times=HUNDRED;
}else if (value < HALFHUNDRED){
}else if (value < HALF_HUNDRED){
times = (int) Math.round(ONEPOINTEIGHT*value + TEN);
}else {
times = (int) (SIX*value - TWOHUNDRED);
times = (int) (SIX*value - TWO_HUNDRED);
}
}
@ -308,14 +314,14 @@ public class JFormSliderPane extends JPanel {
dialog = new FormPopupPane(upButton,dialogContentPanel);
if (upButtonX == 0) {
upButtonX = btnCoords.x;
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOGWIDTH + upButton.getWidth() + SHOWVALBUTTONWIDTH , -DIALOGHEIGHT);
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOG_WIDTH + upButton.getWidth() + SHOWVALBUTTON_WIDTH , -DIALOG_HEIGHT);
}
}else {
if (upButtonX == 0) {
upButtonX = btnCoords.x;
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOGWIDTH + upButton.getWidth() +SHOWVALBUTTONWIDTH, -DIALOGHEIGHT);
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOG_WIDTH + upButton.getWidth() +SHOWVALBUTTON_WIDTH, -DIALOG_HEIGHT);
} else {
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOGWIDTH + upButton.getWidth() +SHOWVALBUTTONWIDTH, -DIALOGHEIGHT);
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOG_WIDTH + upButton.getWidth() +SHOWVALBUTTON_WIDTH, -DIALOG_HEIGHT);
}
}
}
@ -334,82 +340,13 @@ public class JFormSliderPane extends JPanel {
}
}
//class JFromSliderPaneUI extends BasicSliderUI {
//
// private static final int VERTICAL_WIDTH = 11;
// private static final int VERTICAL_HEIGHT = 16;
// private static final int FOUR = 4;
// private static final int FIVE = 5;
// private static final int SIX = 6;
//
// public JFromSliderPaneUI(UISlider b) {
// super(b);
// }
//
// /** */
// /**
// * 绘制指示物
// */
//
// public Dimension getThumbSize() {
// Dimension size = new Dimension();
//
// if ( slider.getOrientation() == JSlider.VERTICAL ) {
// size.width = VERTICAL_WIDTH;
// size.height = VERTICAL_HEIGHT;
// }
// else {
// size.width = VERTICAL_WIDTH;
// size.height = VERTICAL_HEIGHT;
// }
//
// return size;
// }
//
// public void paintThumb(Graphics g) {
// Rectangle knobBounds = thumbRect;
// int w = knobBounds.width;
// int h = knobBounds.height;
//
// g.translate(knobBounds.x, knobBounds.y);
// if ( slider.isEnabled() ) {
// g.setColor(slider.getBackground());
// }
// else {
// g.setColor(slider.getBackground().darker());
// }
// g.setColor(Color.darkGray);
// g.fillRect(0, 1, w-SIX, h+1);
// }
//
// /** */
// /**
// * 绘制刻度轨迹
// */
// public void paintTrack(Graphics g) {
// int cy, cw;
// Rectangle trackBounds = trackRect;
// if (slider.getOrientation() == UISlider.HORIZONTAL) {
// Graphics2D g2 = (Graphics2D) g;
// cy = (trackBounds.height / 2);
// cw = trackBounds.width;
// g.setColor(Color.lightGray);
// g.drawLine(0, cy, cw+FIVE, cy);
// g.drawLine(FIVE+cw/2, cy-FOUR, FIVE+cw/2, cy+FOUR);
// } else {
// super.paintTrack(g);
// }
// }
//
//}
//
class FormPopupPane extends JPopupMenu {
private JComponent contentPane;
private static final int UPLABELHEIGHT = 25;
private static final int HALFHUNDRED = 50;
private static final int DIALOGWIDTH = 150;
private static final int DIALOGHEIGHT = 220;
private static final int UPLABELWIDTH = 300;
private static final int UPLABEL_HEIGHT = 25;
private static final int DIALOG_WIDTH = 150;
private static final int DIALOG_HEIGHT = 220;
private static final int UPLABEL_WIDTH = 300;
private JComponent centerPane;
private UILabel upLabel;
FormPopupPane(UIButton b,JPanel dialogContentPanel) {
@ -417,7 +354,7 @@ class FormPopupPane extends JPopupMenu {
centerPane = new JPanel(new BorderLayout());
upLabel = new UILabel(" " + Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce"));
upLabel.setOpaque(true);
upLabel.setPreferredSize(new Dimension(UPLABELWIDTH,UPLABELHEIGHT));
upLabel.setPreferredSize(new Dimension(UPLABEL_WIDTH,UPLABEL_HEIGHT));
upLabel.setBackground(Color.LIGHT_GRAY);
upLabel.setBorder(new MatteBorder(0,0,1,0,Color.gray));
centerPane.add(dialogContentPanel,BorderLayout.NORTH);
@ -425,7 +362,7 @@ class FormPopupPane extends JPopupMenu {
contentPane.add(centerPane,BorderLayout.CENTER);
// contentPane.setBorder(new MatteBorder(1,1,1,1,Color.darkGray));
this.add(contentPane, BorderLayout.CENTER);
this.setPreferredSize(new Dimension(DIALOGWIDTH, DIALOGHEIGHT));
this.setPreferredSize(new Dimension(DIALOG_WIDTH, DIALOG_HEIGHT));
this.setOpaque(false);
}

97
designer_base/src/com/fr/design/mainframe/JSliderPane.java

@ -1,7 +1,6 @@
package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIRadioButton;
import com.fr.design.gui.ilable.UILabel;
@ -30,21 +29,19 @@ public class JSliderPane extends JPanel {
private static final double ONEPOINTEIGHT = 1.8;
private static final int SIX = 6;
private static final int TEN = 10;
private static final int ONEEIGHT = 18;
private static final int FONTSIZE = 14;
private static final int SPINNERWIDTH= 45;
private static final int SPINNERHEIGHT = 20;
private static final int TWOFIVE = 25;
private static final int FOURTEN = 40;
private static final int HALFHUNDRED = 50;
private static final int ONE_EIGHT = 18;
private static final int FONT_SIZE = 14;
private static final int SPINNER_WIDTH= 45;
private static final int SPINNER_HEIGHT = 20;
private static final int HALF_HUNDRED = 50;
private static final int HUNDRED = 100;
private static final int TWOHUNDRED = 200;
private static final int THREEHUNDRED = 300;
private static final int FOURHUNDRED = 400;
private static final int DIALOGWIDTH = 150;
private static final int DIALOGHEIGHT = 240;
private static final int SHOWVALBUTTONWIDTH = 70;
private static final int SHOWVALBUTTONHEIGHTH = 25;
private static final int TWO_HUNDRED = 200;
private static final int THREE_HUNDRED = 300;
private static final int FOUR_HUNDRED = 400;
private static final int DIALOG_WIDTH = 150;
private static final int DIALOG_HEIGHT = 240;
private static final int SHOWVALBUTTON_WIDTH = 70;
private static final int SHOWVALBUTTON_HEIGHTH = 25;
public int showValue = 100;
public double resolutionTimes = 1.0;
private static JSliderPane THIS;
@ -72,14 +69,14 @@ public class JSliderPane extends JPanel {
public JSliderPane() {
this.setLayout(new BorderLayout());
slider = new UISlider(0,HUNDRED,HALFHUNDRED);
slider = new UISlider(0,HUNDRED,HALF_HUNDRED);
slider.setUI(new JSliderPaneUI(slider));
slider.addChangeListener(listener);
showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, TEN, FOURHUNDRED, 1));
showValSpinner = new UIBasicSpinner(new SpinnerNumberModel(HUNDRED, TEN, FOUR_HUNDRED, 1));
showValSpinner.setEnabled(true);
showValSpinner.addChangeListener(showValSpinnerChangeListener);
showValSpinner.setPreferredSize(new Dimension(SPINNERWIDTH, SPINNERHEIGHT));
showValSpinner.setPreferredSize(new Dimension(SPINNER_WIDTH, SPINNER_HEIGHT));
//MoMeak:控制只能输入10-400,但是用起来感觉不舒服,先注释掉吧
// JSpinner.NumberEditor editor = new JSpinner.NumberEditor(showValSpinner, "0");
// showValSpinner.setEditor(editor);
@ -97,9 +94,8 @@ public class JSliderPane extends JPanel {
showValButton = new UIButton(showValSpinner.getValue()+"%");
showValButton.setBorderPainted(false);
showValButton.setPreferredSize(new Dimension(SHOWVALBUTTONWIDTH,SHOWVALBUTTONHEIGHTH));
showValButton.setPreferredSize(new Dimension(SHOWVALBUTTON_WIDTH,SHOWVALBUTTON_HEIGHTH));
showValButton.addActionListener(showValButtonActionListener);
initUIRadioButton();
initPane();
JPanel panel = new JPanel(new FlowLayout(1,1,0));
@ -108,7 +104,7 @@ public class JSliderPane extends JPanel {
panel.add(upButton);
panel.add(showValButton);
this.add(panel,BorderLayout.NORTH);
this.setBounds(0,0,THREEHUNDRED,ONEEIGHT);
this.setBounds(0,0,THREE_HUNDRED,ONE_EIGHT);
}
public static final JSliderPane getInstance() {
@ -167,7 +163,7 @@ public class JSliderPane extends JPanel {
JPanel spinnerPanel = new JPanel(new FlowLayout());
spinnerPanel.add(showValSpinner);
UILabel percent = new UILabel("%");
percent.setFont(new Font("Dialog", Font.PLAIN, FONTSIZE));
percent.setFont(new Font("Dialog", Font.PLAIN, FONT_SIZE));
spinnerPanel.add(percent);
return spinnerPanel;
}
@ -185,6 +181,14 @@ public class JSliderPane extends JPanel {
int val = (int) ((UIBasicSpinner)e.getSource()).getValue();
isButtonOrIsTxt = true;
resolutionTimes = divide(showValue,100,2);
if (val > FOUR_HUNDRED){
showValSpinner.setValue(FOUR_HUNDRED);
val = FOUR_HUNDRED;
}
if (val < TEN){
showValSpinner.setValue(TEN);
val = TEN;
}
refreshSlider(val);
refreshBottun(val);
}
@ -225,11 +229,11 @@ public class JSliderPane extends JPanel {
private void refreshSlider(int val){
showValue = val;
if (showValue >HUNDRED){
slider.setValue((int)(showValue+TWOHUNDRED)/SIX);
slider.setValue((int)(showValue+TWO_HUNDRED)/SIX);
}else if (showValue <HUNDRED){
slider.setValue((int)((showValue-TEN)/ONEPOINTEIGHT));
}else if (showValue == HUNDRED){
slider.setValue(HALFHUNDRED);
slider.setValue(HALF_HUNDRED);
}
}
@ -269,12 +273,12 @@ public class JSliderPane extends JPanel {
}
if(e.getActionCommand().equals("more")){
int newUpVal = showValue + TEN;
if (newUpVal <= FOURHUNDRED ){
if (newUpVal <= FOUR_HUNDRED ){
showValue = newUpVal;
showValSpinner.setValue(newUpVal);
}else {
showValue = newUpVal;
showValSpinner.setValue(FOURHUNDRED);
showValSpinner.setValue(FOUR_HUNDRED);
}
}
isButtonOrIsTxt = true;
@ -285,12 +289,12 @@ public class JSliderPane extends JPanel {
private void getTimes(int value){
if (value == HALFHUNDRED){
if (value == HALF_HUNDRED){
times=HUNDRED;
}else if (value < HALFHUNDRED){
}else if (value < HALF_HUNDRED){
times = (int) Math.round(ONEPOINTEIGHT*value + TEN);
}else {
times = (int) (SIX*value - TWOHUNDRED);
times = (int) (SIX*value - TWO_HUNDRED);
}
}
@ -309,28 +313,28 @@ public class JSliderPane extends JPanel {
dialog = new PopupPane(upButton,dialogContentPanel);
if (upButtonX == 0) {
upButtonX = btnCoords.x;
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOGWIDTH + upButton.getWidth() + SHOWVALBUTTONWIDTH , -DIALOGHEIGHT);
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOG_WIDTH + upButton.getWidth() + SHOWVALBUTTON_WIDTH , -DIALOG_HEIGHT);
}
}else {
if (upButtonX == 0) {
upButtonX = btnCoords.x;
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOGWIDTH + upButton.getWidth() +SHOWVALBUTTONWIDTH, -DIALOGHEIGHT);
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOG_WIDTH + upButton.getWidth() +SHOWVALBUTTON_WIDTH, -DIALOG_HEIGHT);
} else {
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOGWIDTH + upButton.getWidth() +SHOWVALBUTTONWIDTH, -DIALOGHEIGHT);
GUICoreUtils.showPopupMenu(dialog, upButton, - DIALOG_WIDTH + upButton.getWidth() +SHOWVALBUTTON_WIDTH, -DIALOG_HEIGHT);
}
}
}
public static void main(String[] args)
{
// JFrame jf = new JFrame("test");
// jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// JPanel content = (JPanel)jf.getContentPane();
// content.setLayout(new BorderLayout());
// content.add(JSliderPane.getInstance(),BorderLayout.CENTER);
// GUICoreUtils.centerWindow(jf);
// jf.setSize(400, 80);
// jf.setVisible(true);
JFrame jf = new JFrame("test");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = (JPanel)jf.getContentPane();
content.setLayout(new BorderLayout());
content.add(JSliderPane.getInstance(),BorderLayout.CENTER);
GUICoreUtils.centerWindow(jf);
jf.setSize(400, 80);
jf.setVisible(true);
}
}
@ -406,11 +410,10 @@ class JSliderPaneUI extends BasicSliderUI {
class PopupPane extends JPopupMenu {
private JComponent contentPane;
private static final int UPLABELHEIGHT = 25;
private static final int HALFHUNDRED = 50;
private static final int DIALOGWIDTH = 150;
private static final int DIALOGHEIGHT = 240;
private static final int UPLABELWIDTH = 300;
private static final int UPLABEL_HEIGHT = 25;
private static final int DIALOG_WIDTH = 150;
private static final int DIALOG_HEIGHT = 240;
private static final int UPLABEL_WIDTH = 300;
private JComponent centerPane;
private UILabel upLabel;
PopupPane(UIButton b,JPanel dialogContentPanel) {
@ -418,7 +421,7 @@ class PopupPane extends JPopupMenu {
centerPane = new JPanel(new BorderLayout());
upLabel = new UILabel(" " + Inter.getLocText("FR-Designer_Scale_EnlargeOrReduce"));
upLabel.setOpaque(true);
upLabel.setPreferredSize(new Dimension(UPLABELWIDTH,UPLABELHEIGHT));
upLabel.setPreferredSize(new Dimension(UPLABEL_WIDTH,UPLABEL_HEIGHT));
upLabel.setBackground(Color.LIGHT_GRAY);
upLabel.setBorder(new MatteBorder(0,0,1,0,Color.gray));
centerPane.add(dialogContentPanel,BorderLayout.NORTH);
@ -426,7 +429,7 @@ class PopupPane extends JPopupMenu {
contentPane.add(centerPane,BorderLayout.CENTER);
// contentPane.setBorder(new MatteBorder(1,1,1,1,Color.darkGray));
this.add(contentPane, BorderLayout.CENTER);
this.setPreferredSize(new Dimension(DIALOGWIDTH, DIALOGHEIGHT));
this.setPreferredSize(new Dimension(DIALOG_WIDTH, DIALOG_HEIGHT));
this.setOpaque(false);
}

38
designer_form/src/com/fr/design/mainframe/FormArea.java

@ -9,11 +9,7 @@ import java.awt.Insets;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.MouseEvent;
import java.awt.event.*;
import javax.swing.JComponent;
import javax.swing.JPanel;
@ -71,6 +67,7 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
private double START_VALUE = DEFAULT_SLIDER;
private int resolution = ScreenResolution.getScreenResolution();
private double screenValue;
private boolean isCtrl = false;
public FormScrollBar getHorScrollBar() {
return horScrollBar;
@ -105,8 +102,39 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
addFormRuler();
}
this.setFocusTraversalKeysEnabled(false);
this.designer.addMouseWheelListener(showValSpinnerMouseWheelListener);
this.designer.addKeyListener(showValSpinnerKeyListener);
}
KeyListener showValSpinnerKeyListener = new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if( e.getKeyText(e.getKeyCode()).toLowerCase().equals("ctrl")){
isCtrl = true ;
}
}
@Override
public void keyReleased(KeyEvent e) {
isCtrl = false ;
}
};
MouseWheelListener showValSpinnerMouseWheelListener = new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
if (isCtrl){
int dir = e.getWheelRotation();
int old_resolution = (int) slidePane.getShowVal().getValue();
slidePane.getShowVal().setValue(old_resolution - (dir * SHOWVALMIN));
}
}
};
/**
* 增加表单的页面大小控制界面包括手动修改和滑块拖动
*/

71
designer_form/src/com/fr/design/mainframe/JForm.java

@ -1,13 +1,10 @@
package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.base.DynamicUnitList;
import com.fr.base.ScreenResolution;
import com.fr.design.DesignState;
import com.fr.design.actions.core.WorkBookSupportable;
import com.fr.design.actions.file.WebPreviewUtils;
import com.fr.design.cell.FloatElementsProvider;
import com.fr.design.cell.bar.DynamicScrollBar;
import com.fr.design.constants.UIConstants;
import com.fr.design.designer.beans.actions.CopyAction;
import com.fr.design.designer.beans.actions.CutAction;
@ -29,8 +26,6 @@ import com.fr.design.mainframe.actions.FormMobileAttrAction;
import com.fr.design.mainframe.actions.TemplateParameterAction;
import com.fr.design.mainframe.form.FormECCompositeProvider;
import com.fr.design.mainframe.form.FormECDesignerProvider;
import com.fr.design.mainframe.form.FormElementCasePaneDelegate;
import com.fr.design.mainframe.form.FormReportComponentComposite;
import com.fr.design.mainframe.templateinfo.JFormProcessInfo;
import com.fr.design.mainframe.templateinfo.TemplateProcessInfo;
import com.fr.design.mainframe.toolbar.ToolBarMenuDock;
@ -52,9 +47,6 @@ import com.fr.form.ui.container.WLayout;
import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import com.fr.grid.Grid;
import com.fr.grid.GridUtils;
import com.fr.report.ReportHelper;
import com.fr.stable.ArrayUtils;
import com.fr.stable.Constants;
import com.fr.stable.bridge.StableFactory;
@ -112,6 +104,10 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
return processInfo;
}
public FormECCompositeProvider getReportComposite(){
return this.reportComposite;
}
@Override
public void setJTemplateResolution(int resolution) {
@ -264,25 +260,25 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
@Override
public void setScale(int resolution) {
this.resolution = resolution;
ElementCasePane elementCasePane = ((FormReportComponentComposite)reportComposite).elementCaseDesigner.getEditingElementCasePane();
elementCasePane.setResolution(resolution);
elementCasePane.getGrid().getGridMouseAdapter().setResolution(resolution);
elementCasePane.getGrid().setResolution(resolution);
//更新Grid
Grid grid = elementCasePane.getGrid();
DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(elementCasePane.getEditingElementCase());
DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(elementCasePane.getEditingElementCase());
grid.setVerticalExtent(GridUtils.getExtentValue(0, rowHeightList, grid.getHeight(), resolution));
grid.setHorizontalExtent(GridUtils.getExtentValue(0, columnWidthList, grid.getWidth(), resolution));
elementCasePane.getGrid().updateUI();
//更新Column和Row
((DynamicScrollBar)elementCasePane.getVerticalScrollBar()).setDpi(resolution);
((DynamicScrollBar)elementCasePane.getHorizontalScrollBar()).setDpi(resolution);
elementCasePane.getGridColumn().setResolution(resolution);
elementCasePane.getGridColumn().updateUI();
elementCasePane.getGridRow().setResolution(resolution);
elementCasePane.getGridRow().updateUI();
// this.resolution = resolution;
// ElementCasePane elementCasePane = ((FormReportComponentComposite)reportComposite).elementCaseDesigner.getEditingElementCasePane();
// elementCasePane.setResolution(resolution);
// elementCasePane.getGrid().getGridMouseAdapter().setResolution(resolution);
// elementCasePane.getGrid().setResolution(resolution);
// //更新Grid
// Grid grid = elementCasePane.getGrid();
// DynamicUnitList rowHeightList = ReportHelper.getRowHeightList(elementCasePane.getEditingElementCase());
// DynamicUnitList columnWidthList = ReportHelper.getColumnWidthList(elementCasePane.getEditingElementCase());
// grid.setVerticalExtent(GridUtils.getExtentValue(0, rowHeightList, grid.getHeight(), resolution));
// grid.setHorizontalExtent(GridUtils.getExtentValue(0, columnWidthList, grid.getWidth(), resolution));
// elementCasePane.getGrid().updateUI();
// //更新Column和Row
// ((DynamicScrollBar)elementCasePane.getVerticalScrollBar()).setDpi(resolution);
// ((DynamicScrollBar)elementCasePane.getHorizontalScrollBar()).setDpi(resolution);
// elementCasePane.getGridColumn().setResolution(resolution);
// elementCasePane.getGridColumn().updateUI();
// elementCasePane.getGridRow().setResolution(resolution);
// elementCasePane.getGridRow().updateUI();
}
@Override
@ -292,26 +288,7 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
@Override
public int selfAdaptUpdate() {
if (resolution == 0){
resolution = ScreenResolution.getScreenResolution();
}
ElementCasePane elementCasePane = ((FormReportComponentComposite)reportComposite).elementCaseDesigner.getEditingElementCasePane();
ElementCasePane reportPane = elementCasePane.getGrid().getElementCasePane();
int column = reportPane.getSelection().getSelectedColumns()[0];
double columnLength = reportPane.getSelection().getSelectedColumns().length;
double columnExtent = reportPane.getGrid().getHorizontalExtent();
int row = reportPane.getSelection().getSelectedRows()[0];
double rowLength = reportPane.getSelection().getSelectedRows().length;
double rowExtent = reportPane.getGrid().getVerticalExtent();
if (columnLength == 0||rowLength == 0){
return resolution;
}
double time =(columnExtent/columnLength)<(rowExtent/rowLength) ? (columnExtent/columnLength) : (rowExtent/rowLength);
if (reportPane.isHorizontalScrollBarVisible()) {
reportPane.getVerticalScrollBar().setValue(row);
reportPane.getHorizontalScrollBar().setValue(column);
}
return (int) (time * elementCasePane.getGrid().getResolution());
return 0;
}
/**

Loading…
Cancel
Save