diff --git a/designer/src/com/fr/design/mainframe/ElementCasePane.java b/designer/src/com/fr/design/mainframe/ElementCasePane.java index 6682a6fa5..7683d8c3b 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePane.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePane.java @@ -242,6 +242,8 @@ public abstract class ElementCasePane extends Tar initFormatBrush(); } + + public int getMenuState() { return DesignState.WORK_SHEET; } diff --git a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java b/designer/src/com/fr/design/mainframe/ReportComponentComposite.java index 15a4b3233..6019d1c0d 100644 --- a/designer/src/com/fr/design/mainframe/ReportComponentComposite.java +++ b/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) { diff --git a/designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java b/designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java index 67521bf3a..9f4aebccc 100644 --- a/designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java +++ b/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 targetModifiedList = new java.util.ArrayList(); + 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 目标改变事件 diff --git a/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java b/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java index dd6fdb756..92b3fd647 100644 --- a/designer_base/src/com/fr/design/mainframe/JFormSliderPane.java +++ b/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 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 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 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 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; } /**