Browse Source

Merging in latest from upstream (BA/design:refs/heads/release/9.0)

* commit 'd8ecba856733a4ed06d1efc94f37b9fa303d2756':
  无JIRA任务,代码规范
  REPORT-3163 合作开发9.0设计器=>悬停1s后出现提示文字
  PMD
  CR->LF
  REPORT-2897 9.0设计器修改 ->交互验收问题修改
  REPORT-4097 [9.0一轮回归]Mac设计器输出文件时,路径显示问题
  REPORT-3163 合作开发9.0设计器=>右侧tab按钮增加提示文字
  REPORT-3993 - [9.0一轮回归]选中一片单元格设置控件、条件属性,只有第一个单元格有效
  REPORT-4132 [9.0一轮回归] 填报界面控件设置的可用设置没有,两个都成了可见设置
  REPORT-3899 [9.0一轮回归]聚合报表聚合块复制粘贴功能不可用
master
xiaoxia 7 years ago
parent
commit
aa0152bee8
  1. 4
      designer/src/com/fr/design/actions/file/export/AbstractExportAction.java
  2. 31
      designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java
  3. 23
      designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java
  4. 27
      designer/src/com/fr/design/present/BarCodePane.java
  5. 13
      designer/src/com/fr/design/present/ConditionAttributesGroupPane.java
  6. 12
      designer/src/com/fr/design/present/CurrencyLinePane.java
  7. 2
      designer/src/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java
  8. 13
      designer/src/com/fr/poly/PolyDesigner.java
  9. 46
      designer_base/src/com/fr/design/constants/LayoutConstants.java
  10. 3
      designer_base/src/com/fr/design/data/datapane/VerticalChoosePane.java
  11. 2
      designer_base/src/com/fr/design/gui/ibutton/UIButton.java
  12. 7
      designer_base/src/com/fr/design/gui/style/FRFontPane.java
  13. 9
      designer_base/src/com/fr/design/layout/FRGUIPaneFactory.java
  14. 1
      designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java
  15. 7
      designer_base/src/com/fr/design/present/dict/DatabaseDictPane.java
  16. 11
      designer_base/src/com/fr/design/present/dict/DictionaryPane.java
  17. 1
      designer_base/src/com/fr/design/style/AbstractSelectBox.java
  18. 148
      designer_base/src/com/fr/file/FILEChooserPane.java

4
designer/src/com/fr/design/actions/file/export/AbstractExportAction.java

@ -72,7 +72,7 @@ public abstract class AbstractExportAction extends JWorkBookAction {
}
// Choose a file name....
FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(false, true);
FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true);
fileChooserPane.setFILEFilter(this.getChooseFileFilter());
// 打开文件后输出文件名修改,eg:w.cpt.doc / w.svg.doc,去掉中间的后缀名~~ w.doc
@ -139,7 +139,7 @@ public abstract class AbstractExportAction extends JWorkBookAction {
if (exporter instanceof AppExporter) {
AppExporter appExporter = (AppExporter) exporter;
if (exporter instanceof ExcelExporter || exporter instanceof CSVExporter
|| exporter instanceof PDFExporterProcessor || exporter instanceof WordExporter) {
|| exporter instanceof PDFExporterProcessor || exporter instanceof WordExporter) {
ReportHelper.clearFormulaResult(tpl);// 清空rpt中的公式计算结果
appExporter.export(fileOutputStream, tpl.execute(parameterMap, ActorFactory.getActor(ActorConstants.TYPE_PAGE)

31
designer/src/com/fr/design/mainframe/CellWidgetPropertyPane.java

@ -1,6 +1,7 @@
package com.fr.design.mainframe;
import com.fr.base.FRContext;
import com.fr.design.actions.utils.ReportActionUtils;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.DialogActionAdapter;
@ -15,6 +16,7 @@ import com.fr.grid.selection.CellSelection;
import com.fr.grid.selection.FloatSelection;
import com.fr.grid.selection.Selection;
import com.fr.privilege.finegrain.WidgetPrivilegeControl;
import com.fr.report.cell.CellElement;
import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.cell.TemplateCellElement;
import com.fr.report.elementcase.TemplateElementCase;
@ -30,6 +32,7 @@ public class CellWidgetPropertyPane extends BasicPane {
private TemplateCellElement cellElement;
private WidgetPane cellEditorDefPane;
private ElementCasePane ePane;
public static CellWidgetPropertyPane getInstance(){
if (singleton == null) {
@ -84,6 +87,7 @@ public class CellWidgetPropertyPane extends BasicPane {
public void reInit(ElementCasePane ePane){
this.ePane = ePane;
cellEditorDefPane = new WidgetPane(ePane);
this.removeAll();
this.add(cellEditorDefPane, BorderLayout.CENTER);
@ -108,18 +112,23 @@ public class CellWidgetPropertyPane extends BasicPane {
if (cellElement == null) {// 利用默认的CellElement.
return;
}
Widget cellWidget = this.cellEditorDefPane.update();
// p:最后把这个cellEditorDef设置到CellGUIAttr.
if (cellWidget instanceof NoneWidget) {
cellElement.setWidget(null);
} else {
if (cellElement.getWidget() != null) {
cellWidget = upDateWidgetAuthority(cellElement, cellWidget);
final CellSelection finalCS = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase();
ReportActionUtils.actionIterateWithCellSelection(finalCS, tplEC, new ReportActionUtils.IterAction() {
public void dealWith(CellElement editCellElement) {
Widget cellWidget = cellEditorDefPane.update();
// p:最后把这个cellEditorDef设置到CellGUIAttr.
TemplateCellElement cellElement = (TemplateCellElement) editCellElement;
if (cellWidget instanceof NoneWidget) {
cellElement.setWidget(null);
} else {
if (cellElement.getWidget() != null) {
cellWidget = upDateWidgetAuthority(cellElement, cellWidget);
}
cellElement.setWidget(cellWidget);
}
}
cellElement.setWidget(cellWidget);
}
});
}

23
designer/src/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java

@ -11,6 +11,7 @@ import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.JTemplate;
@ -39,6 +40,8 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
private static final int HEAD_WDITH = 290;
private static final int HEAD_HEIGTH = 24;
private static final Dimension NORMAL_DIMENSION = new Dimension(155, 20);
private static final Dimension SMALL_DIMENSION = new Dimension(150, 20);
// normal
private UIButtonGroup autoshrik;
@ -138,7 +141,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
new Component[]{new UILabel(Inter.getLocText("FR-Designer_CellWrite_InsertRow_Policy"), SwingConstants.LEFT), insertRowPolicy},
new Component[]{null, insertRowPane},
};
southContentPane = TableLayoutHelper.createGapTableLayoutPane(components1, rowSize1, columnSize1, rowCount1, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM);
southContentPane = TableLayoutHelper.createGapTableLayoutPane(components1, rowSize1, columnSize1, rowCount1, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_MEDIUM);
JPanel seniorPane = new JPanel(new BorderLayout());
seniorPane.add(seniorUpPane(), BorderLayout.NORTH);
seniorPane.add(southContentPane, BorderLayout.CENTER);
@ -167,15 +170,25 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
double[] downRowSize = {p, p, p, p, p, p};
double[] downColumnSize = {p, f};
int[][] downRowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}};
JPanel showContentPane = new JPanel(FRGUIPaneFactory.createRightZeroLayout());
showContent.setPreferredSize(SMALL_DIMENSION);
showContentPane.add(showContent);
fileNamePane.setBorder(BorderFactory.createEmptyBorder(0,12,0,0));
JPanel tooltipTextFieldPane = new JPanel(FRGUIPaneFactory.createRightZeroLayout());
tooltipTextField.setPreferredSize(NORMAL_DIMENSION);
tooltipTextFieldPane.add(tooltipTextField);
Component[][] downComponent = new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(Inter.getLocText("FR-Designer_Show_Content"), SwingConstants.LEFT), showContent},
new Component[]{null, fileNamePane},
new Component[]{new UILabel(Inter.getLocText("FR-Designer_CellWrite_ToolTip"), SwingConstants.RIGHT), tooltipTextField},
new Component[]{new UILabel(Inter.getLocText("FR-Designer_Show_Content"), SwingConstants.LEFT), showContentPane},
new Component[]{fileNamePane, null},
new Component[]{new UILabel(Inter.getLocText("FR-Designer_CellWrite_ToolTip"), SwingConstants.LEFT), tooltipTextFieldPane},
new Component[]{null, null},
new Component[]{null, null},
};
JPanel downPane = TableLayoutHelper.createGapTableLayoutPane(downComponent, downRowSize, downColumnSize, downRowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM);
JPanel downPane = TableLayoutHelper.createGapTableLayoutPane(downComponent, downRowSize, downColumnSize, downRowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_MEDIUM);
JPanel pane = new JPanel(new BorderLayout());
pane.add(upPane, BorderLayout.NORTH);
pane.add(downPane, BorderLayout.CENTER);

27
designer/src/com/fr/design/present/BarCodePane.java

@ -60,17 +60,6 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
addlistener();
}
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(new BarCodePane(), BorderLayout.CENTER);
GUICoreUtils.centerWindow(jf);
jf.setSize(270, 400);
jf.setVisible(true);
}
private void initComponents() {
barCodePreviewPane = new BarCodePreviewPane();
this.barWidthSpinner = new UIBasicSpinner(new SpinnerNumberModel(10.0, 1, 100, 1.0));
@ -86,7 +75,7 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
RCodesizespinner = new UIBasicSpinner(new SpinnerNumberModel(2, 1, 6, 1));
RCodeVersionComboBox = new UIComboBox();
RCodeErrorCorrectComboBox = new UIComboBox();
typeSetLabel = new UILabel(Inter.getLocText("Type_Set"), UILabel.LEFT);
typeSetLabel = new UILabel(Inter.getLocText("FR-Designer_Type_Set"), UILabel.LEFT);
initVersionComboBox();
initErrorCorrectComboBox();
@ -106,7 +95,7 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
new Component[]{borderPane, null},
new Component[]{centerPane, null}
};
JPanel barCode = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_LARGE);
JPanel barCode = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_HUGER, LayoutConstants.VGAP_LARGE);
centerPane.add(getNormalPane(), "normal");
centerPane.add(getSpecialPane(), "special");
typeComboBox.addItemListener(new ItemListener() {
@ -150,9 +139,9 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
double[] rowSize = {p, p, p, p, p, p, p, p};
double[] columnSize = {p, f, f};
int[][] rowCount = {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}};
JPanel barWidthContainer = new JPanel(new FlowLayout(FlowLayout.LEFT, 2, 0));
JPanel barWidthContainer = new JPanel(new BorderLayout());
barWidthContainer.add(barWidthSpinner);
JPanel barHeightContainer = new JPanel(new FlowLayout(FlowLayout.LEFT, 2, 0));
JPanel barHeightContainer = new JPanel(new BorderLayout());
barHeightContainer.add(barHeightSpinner);
UILabel uiLabel = new UILabel(Inter.getLocText("FR-Designer-Tree_Width"), UILabel.RIGHT);
uiLabel.setPreferredSize(typeSetLabel.getPreferredSize());
@ -172,9 +161,9 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
private JPanel getSpecialPane() {
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p, p};
double[] rowSize = {p, p, p, p, p, p, p, p};
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}};
double[] columnSize = {p, f};
double[] rowSize = {p, p, p};
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
UILabel uiLabel = new UILabel(Inter.getLocText("RCodeVersion"), UILabel.LEFT);
uiLabel.setPreferredSize(typeSetLabel.getPreferredSize());
RCodeVersionComboBox.setPreferredSize(new Dimension(155,20));
@ -186,7 +175,7 @@ public class BarCodePane extends FurtherBasicBeanPane<BarcodePresent> {
new Component[]{new UILabel(Inter.getLocText("RCodeDrawPix"), UILabel.LEFT), RCodesizespinner}
};
JPanel specialPane = TableLayoutHelper.createGapTableLayoutPane(components_special, rowSize, columnSize, rowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_LARGE);
JPanel specialPane = TableLayoutHelper.createGapTableLayoutPane(components_special, rowSize, columnSize, rowCount, LayoutConstants.VGAP_HUGER, LayoutConstants.VGAP_LARGE);
return specialPane;
}

13
designer/src/com/fr/design/present/ConditionAttributesGroupPane.java

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import com.fr.base.FRContext;
import com.fr.design.actions.utils.ReportActionUtils;
import com.fr.design.gui.controlpane.UIListControlPane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.ElementCasePane;
@ -15,6 +16,7 @@ import com.fr.design.gui.controlpane.NameObjectCreator;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.general.Inter;
import com.fr.grid.selection.CellSelection;
import com.fr.report.cell.CellElement;
import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.cell.TemplateCellElement;
import com.fr.report.cell.cellattr.highlight.DefaultHighlight;
@ -27,6 +29,7 @@ import com.fr.stable.Nameable;
public class ConditionAttributesGroupPane extends UIListControlPane {
private static ConditionAttributesGroupPane singleton;
private TemplateCellElement editCellElement; // 当前单元格对象
private ElementCasePane ePane;
private ConditionAttributesGroupPane() {
super();
@ -49,7 +52,14 @@ public class ConditionAttributesGroupPane extends UIListControlPane {
if (isPopulating) {
return;
}
editCellElement.setHighlightGroup(updateHighlightGroup());
final CellSelection finalCS = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase();
ReportActionUtils.actionIterateWithCellSelection(finalCS, tplEC, new ReportActionUtils.IterAction() {
public void dealWith(CellElement editCellElement) {
((TemplateCellElement)editCellElement).setHighlightGroup(updateHighlightGroup());
}
});
DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified();
}
@ -64,6 +74,7 @@ public class ConditionAttributesGroupPane extends UIListControlPane {
}
public void populate(ElementCasePane ePane) {
this.ePane = ePane;
CellSelection cs = (CellSelection) ePane.getSelection();
final TemplateElementCase tplEC = ePane.getEditingElementCase();
editCellElement = tplEC.getTemplateCellElement(cs.getColumn(), cs.getRow());

12
designer/src/com/fr/design/present/CurrencyLinePane.java

@ -2,6 +2,7 @@ package com.fr.design.present;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.border.UIRoundedBorder;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.constants.UIConstants;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.ispinner.UIBasicSpinner;
@ -31,6 +32,7 @@ import java.awt.*;
public class CurrencyLinePane extends FurtherBasicBeanPane<CurrencyLinePresent> {
private static final int VS_NUM = 4;
private static final int VG_NUM = 6;
private static final Dimension NORMAL_DIMENSION = new Dimension(155, 20);
private UIBasicSpinner intPartSpinner;
private UIBasicSpinner deciPartSpinner;
private UITextField textField;
@ -72,11 +74,11 @@ public class CurrencyLinePane extends FurtherBasicBeanPane<CurrencyLinePresent>
protected void initComponents() {
// 整数位选择
intPartSpinner = new UIBasicSpinner(new SpinnerNumberModel(9, 1, 20, 1));
intPartSpinner.setPreferredSize(new Dimension(158, 20));
intPartSpinner.setPreferredSize(NORMAL_DIMENSION);
// 小数位选择
deciPartSpinner = new UIBasicSpinner(new SpinnerNumberModel(2, 1, 10, 1));
deciPartSpinner.setPreferredSize(new Dimension(158, 20));
deciPartSpinner.setPreferredSize(NORMAL_DIMENSION);
// 预览区域
textField = new UITextField(10);
@ -95,7 +97,7 @@ public class CurrencyLinePane extends FurtherBasicBeanPane<CurrencyLinePresent>
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p, p, p, p};
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}};
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("Data"), UILabel.LEFT), textField},
@ -105,7 +107,7 @@ public class CurrencyLinePane extends FurtherBasicBeanPane<CurrencyLinePresent>
};
JPanel linePane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
JPanel linePane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_HUGER, LayoutConstants.VGAP_LARGE);
this.setLayout(new BorderLayout());
this.add(linePane, BorderLayout.CENTER);
@ -186,7 +188,7 @@ public class CurrencyLinePane extends FurtherBasicBeanPane<CurrencyLinePresent>
protected static JPanel groupPane(JComponent comp) {
JPanel jp = new JPanel();
jp.setBorder(null);
jp.setLayout(new FlowLayout(FlowLayout.LEFT));
jp.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
jp.add(comp);
return jp;
}

2
designer/src/com/fr/design/widget/ui/BasicWidgetPropertySettingPane.java

@ -22,7 +22,7 @@ public class BasicWidgetPropertySettingPane extends BasicPane {
public BasicWidgetPropertySettingPane() {
this.setLayout(new BorderLayout());
enableCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Visible"), true);
enableCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Enabled"), true);
enableCheckBox.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
visibleCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Widget-Visible"), true);
visibleCheckBox.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));

13
designer/src/com/fr/poly/PolyDesigner.java

@ -738,7 +738,7 @@ public class PolyDesigner extends ReportComponent<PolyWorkSheet, PolyElementCase
* @return 工具
*/
public ToolBarDef[] toolbars4Target() {
return selection == null || isChooseBlock() ? null : this.selection.toolbars4Target();
return selection == null || isChooseBlock() || isChooseChartInner() ? null : this.selection.toolbars4Target();
}
/**
@ -753,7 +753,7 @@ public class PolyDesigner extends ReportComponent<PolyWorkSheet, PolyElementCase
}
if (selection == null || isChooseBlock()) {
if (selection == null || isChooseBlock() || isChooseChartInner()) {
setToolBarElemEnabled(selection != null);
return toolBarComponent;
} else {
@ -909,6 +909,15 @@ public class PolyDesigner extends ReportComponent<PolyWorkSheet, PolyElementCase
return selectedtype == SelectionType.BLOCK;
}
/**
* 是否选中图表聚合块内部
*
* @return 是则返回true
*/
public boolean isChooseChartInner() {
return selectedtype == SelectionType.CHART_INNER;
}
/**
* Fire gridSelection Changed
*/

46
designer_base/src/com/fr/design/constants/LayoutConstants.java

@ -1 +1,45 @@
package com.fr.design.constants; /** * Created by IntelliJ IDEA. * Author : Richer * Version: 7.0.3 * Date: 12-12-27 * Time: 下午2:28 * 所有的间隙常数都从这里取,注意写上PMD检测规则来检查 */ public class LayoutConstants { private LayoutConstants() { } /** * 水平间隙 */ public static final int HGAP_SMALL = 1; /** * 水平间隙 */ public static final int HGAP_LARGE = 4; /** * 垂直间隙 */ public static final int VGAP_SMALL = 4; /** * 垂直间隙 */ public static final int VGAP_MEDIUM = 6; /** * 垂直间隙 */ public static final int VGAP_LARGE = 10; /** * 图表属性表中二级菜单距离右边框的距离 */ public static final int CHART_ATTR_TOMARGIN = 46; }
package com.fr.design.constants;
/**
* Created by IntelliJ IDEA.
* Author : Richer
* Version: 7.0.3
* Date: 12-12-27
* Time: 下午2:28
* 所有的间隙常数都从这里取注意写上PMD检测规则来检查
*/
public class LayoutConstants {
private LayoutConstants() {
}
/**
* 水平间隙
*/
public static final int HGAP_SMALL = 1;
/**
* 水平间隙
*/
public static final int HGAP_LARGE = 4;
/**
* 垂直间隙
*/
public static final int VGAP_SMALL = 4;
/**
* 垂直间隙
*/
public static final int VGAP_MEDIUM = 6;
/**
* 垂直间隙
*/
public static final int VGAP_LARGE = 10;
/**
* 垂直间隙
*/
public static final int VGAP_HUGER = 20;
/**
* 图表属性表中二级菜单距离右边框的距离
*/
public static final int CHART_ATTR_TOMARGIN = 46;
}

3
designer_base/src/com/fr/design/data/datapane/VerticalChoosePane.java

@ -31,6 +31,7 @@ public class VerticalChoosePane extends ChoosePane implements DesignerBean {
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p, p, p};
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
JPanel rs = new JPanel(new BorderLayout(0, 0));
rs.add(tableNameComboBox, BorderLayout.CENTER);
@ -53,7 +54,7 @@ public class VerticalChoosePane extends ChoosePane implements DesignerBean {
new Component[]{l3, rs}
};
JPanel content = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
JPanel content = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_HUGER, LayoutConstants.VGAP_LARGE);
this.setLayout(new BorderLayout());
this.add(content, BorderLayout.CENTER);
}

2
designer_base/src/com/fr/design/gui/ibutton/UIButton.java

@ -36,6 +36,7 @@ public class UIButton extends JButton implements UIObserver {
private CellBorderStyle border = null;
protected UIObserverListener uiObserverListener;
private static final int TOOLTIP_INIT_DELAY = 1000; // 延迟 1s 显示提示文字
public UIButton() {
this(StringUtils.EMPTY);
@ -139,6 +140,7 @@ public class UIButton extends JButton implements UIObserver {
setBackground(null);
setRolloverEnabled(true);
initListener();
ToolTipManager.sharedInstance().setInitialDelay(TOOLTIP_INIT_DELAY);
}
@Override

7
designer_base/src/com/fr/design/gui/style/FRFontPane.java

@ -238,7 +238,11 @@ public class FRFontPane extends AbstractBasicStylePane implements GlobalNameObse
superPane.setPreferredSize(BUTTON_SIZE);
subPane = new UIToggleButton(BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/sub.png"));
subPane.setPreferredSize(BUTTON_SIZE);
isSuperOrSubPane = new TwoButtonPane(superPane, subPane);
Component[] SuperOrSubComponents = new Component[]{
superPane, subPane
};
isSuperOrSubPane = new JPanel(new BorderLayout());
isSuperOrSubPane.add(GUICoreUtils.createFlowPane(SuperOrSubComponents, FlowLayout.LEFT, LayoutConstants.HGAP_SMALL));
Component[] components_font = new Component[]{
colorSelectPane, underline, isStrikethroughCheckBox, isShadowCheckBox
};
@ -248,7 +252,6 @@ public class FRFontPane extends AbstractBasicStylePane implements GlobalNameObse
initAllNames();
setToolTips();
this.setLayout(new BorderLayout());
// this.add(fontNameComboBox, BorderLayout.NORTH);
this.add(createPane(), BorderLayout.CENTER);
DefaultValues defaultValues = FRContext.getDefaultValues();
populateBean(defaultValues.getFRFont());

9
designer_base/src/com/fr/design/layout/FRGUIPaneFactory.java

@ -37,6 +37,15 @@ public class FRGUIPaneFactory {
return new FlowLayout(FlowLayout.LEFT, 0, 0);
}
/**
* 创建一个靠右的布局
*
* @return FlowLayout对象
*/
public static LayoutManager createRightZeroLayout() {
return new FlowLayout(FlowLayout.RIGHT, 0, 0);
}
/**
* 创建一个靠左的水平和垂直间隙均为5的流式布局
*

1
designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java

@ -643,6 +643,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
setTabButtonSelected();
}
});
button.setToolTipText(title);
}
public UIButton getButton() {

7
designer_base/src/com/fr/design/present/dict/DatabaseDictPane.java

@ -37,6 +37,7 @@ public class DatabaseDictPane extends FurtherBasicBeanPane<DatabaseDictionary> i
/**
* richer:数据字典和数据链面板
*/
private static final int GAP_HUGER = 32;
protected com.fr.data.impl.Connection database;
protected DoubleDeckValueEditorPane keyColumnPane;
protected DoubleDeckValueEditorPane valueDictPane;
@ -76,10 +77,10 @@ public class DatabaseDictPane extends FurtherBasicBeanPane<DatabaseDictionary> i
Component[][] components = new Component[][]{
new Component[]{null, null},
new Component[]{new UILabel(Inter.getLocText("FR-Designer_Actual_Value") + " ", UILabel.LEFT), keyColumnPane},
new Component[]{new UILabel(Inter.getLocText("FR-Designer_Display_Value") + " ", UILabel.LEFT), valueDictPane}
new Component[]{new UILabel(Inter.getLocText("FR-Designer_Actual_Value"), UILabel.LEFT), keyColumnPane},
new Component[]{new UILabel(Inter.getLocText("FR-Designer_Display_Value"), UILabel.LEFT), valueDictPane}
};
JPanel dbDictPanel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_MEDIUM, LayoutConstants.VGAP_MEDIUM);
JPanel dbDictPanel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, GAP_HUGER, LayoutConstants.VGAP_LARGE);
this.setLayout(new BorderLayout(0, 4));
this.add(chooseTable, BorderLayout.NORTH);
this.add(dbDictPanel, BorderLayout.CENTER);

11
designer_base/src/com/fr/design/present/dict/DictionaryPane.java

@ -3,9 +3,11 @@ package com.fr.design.present.dict;
import com.fr.data.Dictionary;
import com.fr.data.impl.DynamicSQLDict;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.data.DataCreatorUI;
import com.fr.design.gui.frpane.UIComboBoxPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.general.Inter;
@ -25,18 +27,17 @@ public class DictionaryPane extends UIComboBoxPane<Dictionary> implements DataCr
@Override
protected void initLayout() {
this.setLayout(new BorderLayout(0, 4));
// JPanel northPane = new JPanel(new BorderLayout(4, 0));
// northPane.add(new UILabel(Inter.getLocText("Type_Set"), UILabel.LEFT),BorderLayout.WEST);
// northPane.add(jcb,BorderLayout.CENTER);
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {p, f};
double[] rowSize = {p};
double[] rowSize = {p, p};
int[][] rowCount = {{1, 1}, {1, 1}};
Component[][] components = new Component[][]{
new Component[]{new UILabel(Inter.getLocText("FR-Designer_Type_Set"), UILabel.LEFT), jcb},
new Component[]{null, null}
};
JPanel northPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
JPanel northPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, LayoutConstants.VGAP_HUGER, LayoutConstants.VGAP_MEDIUM);
this.add(northPane, BorderLayout.NORTH);
this.add(cardPane, BorderLayout.CENTER);
}

1
designer_base/src/com/fr/design/style/AbstractSelectBox.java

@ -57,6 +57,7 @@ public abstract class AbstractSelectBox<T> extends AbstractPopBox implements Mou
}
public void ancestorRemoved(AncestorEvent evt) {
hidePopupMenu();
}
public void ancestorMoved(AncestorEvent event) {

148
designer_base/src/com/fr/file/FILEChooserPane.java

@ -1,51 +1,5 @@
package com.fr.file;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.AbstractAction;
import javax.swing.AbstractListModel;
import javax.swing.ActionMap;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.Icon;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.KeyStroke;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.filechooser.FileSystemView;
import javax.swing.plaf.basic.BasicArrowButton;
import javax.swing.plaf.basic.BasicButtonUI;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.dav.LocalEnv;
@ -70,12 +24,23 @@ import com.fr.file.filter.FILEFilter;
import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralContext;
import com.fr.general.Inter;
import com.fr.stable.CoreConstants;
import com.fr.stable.ProductConstants;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils;
import com.fr.stable.*;
import com.fr.stable.project.ProjectConstants;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.filechooser.FileSystemView;
import javax.swing.plaf.basic.BasicArrowButton;
import javax.swing.plaf.basic.BasicButtonUI;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* FileChooserPane要高亮显示某Button,以显示当前路径
* 边距要调整
@ -300,15 +265,15 @@ public class FILEChooserPane extends BasicPane {
if (ss instanceof FILEFilter) {
setFILEFilter((FILEFilter) ss);
} else {
setFILEFilter(null);
}
setFILEFilter(null);
}
}
});
}
private void doCancel(){
this.locationBtnPane.setPopDir(null);
dialogExit();
private void doCancel() {
this.locationBtnPane.setPopDir(null);
dialogExit();
}
/**
@ -343,7 +308,7 @@ public class FILEChooserPane extends BasicPane {
}
}
protected String getEnvProjectName(){
protected String getEnvProjectName() {
return Inter.getLocText("Utils-Report-Env_Directory");
}
@ -361,7 +326,7 @@ public class FILEChooserPane extends BasicPane {
* 在指定index增加过滤器
*
* @param filter 过滤器
* @param index 序号
* @param index 序号
*/
public void addChooseFILEFilter(FILEFilter filter, int index) {
if (filterList.contains(filter)) {
@ -377,7 +342,7 @@ public class FILEChooserPane extends BasicPane {
* 若是已经存在则将之删去之后在指定的位置增加
*
* @param filter 过滤
* @param index 序号
* @param index 序号
*/
public void addChooseFILEFilterToFist(FILEFilter filter, int index) {
if (filterList.contains(filter)) {
@ -421,7 +386,7 @@ public class FILEChooserPane extends BasicPane {
/**
* richer:默认的话就使用.cpt作为后缀名
*
* @param text 文本
* @param text 文本
* @param suffix 后缀
*/
public void setFileNameTextField(String text, String suffix) {
@ -457,6 +422,7 @@ public class FILEChooserPane extends BasicPane {
/**
* 打开对话框
*
* @param parent 父类
* @return 类型
*/
@ -466,6 +432,7 @@ public class FILEChooserPane extends BasicPane {
/**
* 打开对话框
*
* @param parent 父类
* @param suffix 后缀
* @return 类型
@ -476,6 +443,7 @@ public class FILEChooserPane extends BasicPane {
/**
* 打开对话框
*
* @param parent 父类
* @return 类型
*/
@ -485,6 +453,7 @@ public class FILEChooserPane extends BasicPane {
/**
* 打开对话框
*
* @param parent 父类
* @param suffix 后缀
* @return 类型
@ -497,7 +466,7 @@ public class FILEChooserPane extends BasicPane {
* august:控件的事件都在这里面添加的 那么我每次showDialog不都要重复添加一次事件吗无语了
*
* @param parent 父类
* @param type 类型
* @param type 类型
* @param suffix 后缀
* @return 类型
*/
@ -506,7 +475,7 @@ public class FILEChooserPane extends BasicPane {
this.suffix = suffix;
dialog = showWindow((Window)parent, false);
dialog = showWindow((Window) parent, false);
JPanel contentPane = (JPanel) dialog.getContentPane();
contentPane.setLayout(FRGUIPaneFactory.createM_BorderLayout());
contentPane.add(this, BorderLayout.CENTER);
@ -545,11 +514,11 @@ public class FILEChooserPane extends BasicPane {
protected void fileType() {
String appName = ProductConstants.APP_NAME;
JTemplate editing = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if(ComparatorUtils.equals(suffix,".crt")){
if (ComparatorUtils.equals(suffix, ".crt")) {
this.addChooseFILEFilter(new ChooseFileFilter("crt", appName + Inter.getLocText(new String[]{"Utils-The-Chart", "FR-App-All_File"})));
return;
}
if(editing == null || !editing.isChartBook()){
if (editing == null || !editing.isChartBook()) {
String[] fileSuffix_local = LocalEnv.FILE_TYPE;
String[] fileSuffix = {"cpt", "frm", "form", "cht", "chart"};
if (type == JFileChooser.OPEN_DIALOG) {
@ -566,10 +535,10 @@ public class FILEChooserPane extends BasicPane {
// richer:form文件 daniel 改成三个字
this.addChooseFILEFilter(new ChooseFileFilter("frm", appName + Inter.getLocText(new String[]{"FR-App-Template_Form", "FR-App-All_File"})));
this.addChooseFILEFilter(new ChooseFileFilter("form", appName + Inter.getLocText(new String[]{"FR-App-Template_Form", "FR-App-All_File"})));
}else{
String[] fileSuffix_local = {"xls","xlsx"};
} else {
String[] fileSuffix_local = {"xls", "xlsx"};
if (type == JFileChooser.OPEN_DIALOG) {
this.addChooseFILEFilter(new ChooseFileFilter(fileSuffix_local,Inter.getLocText("Import-Excel_Source")));
this.addChooseFILEFilter(new ChooseFileFilter(fileSuffix_local, Inter.getLocText("Import-Excel_Source")));
}
}
@ -578,8 +547,8 @@ public class FILEChooserPane extends BasicPane {
this.addChooseFILEFilter(new ChooseFileFilter("xls", Inter.getLocText("Import-Excel_Source")));
this.addChooseFILEFilter(new ChooseFileFilter("xlsx", Inter.getLocText("Import-Excel2007_Source")));
}
if(ComparatorUtils.equals(suffix,".png")){
this.addChooseFILEFilter(new ChooseFileFilter("png",Inter.getLocText("FR-App-Export_png")));
if (ComparatorUtils.equals(suffix, ".png")) {
this.addChooseFILEFilter(new ChooseFileFilter("png", Inter.getLocText("FR-App-Export_png")));
}
if (type == JFileChooser.SAVE_DIALOG) {
this.addChooseFILEFilter(new ChooseFileFilter("pdf", Inter.getLocText("FR-Import-Export_PDF")));
@ -627,7 +596,7 @@ public class FILEChooserPane extends BasicPane {
postfixComboBox.setSelectedIndex(suffixIndex("doc"));
} else if (ComparatorUtils.equals(suffix, ".txt")) {
postfixComboBox.setSelectedIndex(suffixIndex("txt"));
}else if(ComparatorUtils.equals(suffix,".png")){
} else if (ComparatorUtils.equals(suffix, ".png")) {
postfixComboBox.setSelectedIndex(suffixIndex("png"));
}
//jerry 26216 只保留.cpt .frm有用的格式,并且不可编辑
@ -643,10 +612,10 @@ public class FILEChooserPane extends BasicPane {
}
}
private int suffixIndex(String extension){
for(int i=0 ;i<filterList.size();i++){
private int suffixIndex(String extension) {
for (int i = 0; i < filterList.size(); i++) {
FILEFilter fileFilter = filterList.get(i);
if(fileFilter.containsExtension(extension)){
if (fileFilter.containsExtension(extension)) {
return i;
}
}
@ -697,7 +666,7 @@ public class FILEChooserPane extends BasicPane {
FILE selectedFile = this.getSelectedFILE();
if (!FRContext.getCurrentEnv().hasFileFolderAllow(selectedFile.getPath())) {
JOptionPane.showMessageDialog(FILEChooserPane.this, Inter.getLocText("FR-App-Privilege_No") + "!", Inter.getLocText("FR-App-File_Message"), JOptionPane.WARNING_MESSAGE);
return ;
return;
}
if (selectedFile.exists()) {
int selVal = JOptionPane.showConfirmDialog(dialog, Inter.getLocText("FR-Utils-Would_you_like_to_cover_the_current_file") + " ?",
@ -781,7 +750,7 @@ public class FILEChooserPane extends BasicPane {
PlaceListModel() {
if (FILEChooserPane.this.showEnv) {
envFILE = new FileNodeFILE(new FileNode(ProjectConstants.REPORTLETS_NAME, true)){
envFILE = new FileNodeFILE(new FileNode(ProjectConstants.REPORTLETS_NAME, true)) {
public String getName() {
return getEnvProjectName();
}
@ -800,14 +769,19 @@ public class FILEChooserPane extends BasicPane {
}
if (FILEChooserPane.this.showLoc) {
// 桌面
File[] desktop = FileSystemView.getFileSystemView().getRoots();
if (desktop != null) {
for (int i = 0; i < desktop.length; i++) {
if (desktop[i].exists()) {
filesOfSystem.add(new FileFILE(desktop[i]));
if (OperatingSystem.isWindows()) {
// windows下展示桌面
File[] desktop = FileSystemView.getFileSystemView().getRoots();
if (desktop != null) {
for (int i = 0; i < desktop.length; i++) {
if (desktop[i].exists()) {
filesOfSystem.add(new FileFILE(desktop[i]));
}
}
}
} else { // *nix下展示家目录
filesOfSystem.add(new FileFILE(FileSystemView.getFileSystemView().getDefaultDirectory()));
}
// C, D, E等盘符
@ -1171,9 +1145,9 @@ public class FILEChooserPane extends BasicPane {
}
}
}
public void setPopDir(FILE file){
popDir = file;
public void setPopDir(FILE file) {
popDir = file;
}
public void populate(FILE dir) {
@ -1182,6 +1156,7 @@ public class FILEChooserPane extends BasicPane {
return;
}
boolean isWebAppNamePath;
popDir = dir;
this.buttonList.clear();
@ -1190,12 +1165,13 @@ public class FILEChooserPane extends BasicPane {
}
String path = dir.getPath();
isWebAppNamePath = ComparatorUtils.equals(dir.prefix(), FILEFactory.WEBREPORT_PREFIX);
// 确保最后一个字符是分隔符
if (!path.endsWith("/") && !path.endsWith("\\") && !StringUtils.isBlank(path)) {
path = path + "/";
}
String webAppName = GeneralContext.getCurrentAppNameOfEnv();
if (StringUtils.isBlank(path)) {
if (StringUtils.isBlank(path) && isWebAppNamePath) {
this.buttonList.add(createBlankButton(new SetDirectoryAction(webAppName + '/')));
}
@ -1206,7 +1182,7 @@ public class FILEChooserPane extends BasicPane {
int start = matcher.start();
String btn_text = path.substring(node_start, start);
String btn_path = path.substring(0, start);
if (StringUtils.isBlank(btn_text)) {
if (StringUtils.isBlank(btn_text) && isWebAppNamePath) {
btn_text = webAppName;
}
this.buttonList.add(createBlankButton((new SetDirectoryAction(btn_text + '/',

Loading…
Cancel
Save