xiaoxia 8 years ago
parent
commit
ba68acf028
  1. 7
      designer_base/src/com/fr/design/mainframe/HelpDialogManager.java
  2. 2
      designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java
  3. 2
      designer_chart/src/com/fr/design/chart/ChartPlotFactory.java
  4. 13
      designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/FunnelDataLabelPane.java
  5. 28
      designer_chart/src/com/fr/design/chart/series/SeriesCondition/impl/FunnelPlotDataSeriesConditionPane.java
  6. 6
      designer_chart/src/com/fr/design/chartinterface/FunnelIndependentChartInterface.java
  7. 67
      designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java
  8. 10
      designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java
  9. 67
      designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java
  10. 2
      designer_form/src/com/fr/design/designer/creator/XChartEditor.java
  11. 2
      designer_form/src/com/fr/design/designer/creator/XElementCase.java
  12. 4
      designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java
  13. 2
      designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java
  14. 2
      designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java
  15. 70
      designer_form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java
  16. 42
      designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java
  17. 11
      designer_form/src/com/fr/design/designer/properties/FRFitLayoutPropertiesGroupModel.java
  18. 2
      designer_form/src/com/fr/design/gui/xpane/LayoutBorderPane.java
  19. 42
      designer_form/src/com/fr/design/mainframe/CoverReportPane.java
  20. 10
      designer_form/src/com/fr/design/mainframe/ElementCaseHelpDialog.java

7
designer_base/src/com/fr/design/mainframe/HelpDialogManager.java

@ -35,11 +35,4 @@ public class HelpDialogManager {
}
return THIS;
}
public void destroyDialog() {
if (handler != null) {
handler.destroyHelpDialog();
}
handler = null;
}
}

2
designer_base/src/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java

@ -138,8 +138,6 @@ public abstract class ToolBarMenuDock {
// 添加帮助菜单
menuList.add(createHelpMenuDef());
// 添加社区菜单
menuList.add(createCommunityMenuDef());
return menuList.toArray(new MenuDef[menuList.size()]);
}

2
designer_chart/src/com/fr/design/chart/ChartPlotFactory.java

@ -72,7 +72,7 @@ public class ChartPlotFactory {
.setAxisPaneCls(XYChartStyleAxisPane.class)
.setDataLabelPaneClass(XYDataLabelPane.class));
map.put(FunnelPlot.class.getName(), new FactoryObject()
.setDataLabelPaneClass(PieDataLabelPane.class));
.setDataLabelPaneClass(FunnelDataLabelPane.class));
}
private ChartPlotFactory() {

13
designer_chart/src/com/fr/design/chart/series/SeriesCondition/dlp/FunnelDataLabelPane.java

@ -0,0 +1,13 @@
package com.fr.design.chart.series.SeriesCondition.dlp;
import java.awt.*;
/**
* Created by Mitisky on 16/11/9.
*/
public class FunnelDataLabelPane extends DataLabelPane {
@Override
protected Component[] createComponents4ShowCategoryName() {
return new Component[0];
}
}

28
designer_chart/src/com/fr/design/chart/series/SeriesCondition/impl/FunnelPlotDataSeriesConditionPane.java

@ -0,0 +1,28 @@
package com.fr.design.chart.series.SeriesCondition.impl;
import com.fr.chart.chartattr.FunnelPlot;
import com.fr.chart.chartattr.Plot;
import com.fr.design.chart.series.SeriesCondition.ChartConditionPane;
import com.fr.design.chart.series.SeriesCondition.DataSeriesConditionPane;
import com.fr.design.chart.series.SeriesCondition.PiePlotChartConditionPane;
/**
* Created by Mitisky on 16/11/9.
*/
public class FunnelPlotDataSeriesConditionPane extends DataSeriesConditionPane {
@Override
protected ChartConditionPane createListConditionPane() {
return new PiePlotChartConditionPane();
}
/**
* 返回class对象
* @return class对象
*/
@Override
public Class<? extends Plot> class4Correspond() {
return FunnelPlot.class;
}
}

6
designer_chart/src/com/fr/design/chartinterface/FunnelIndependentChartInterface.java

@ -3,6 +3,8 @@ package com.fr.design.chartinterface;
import com.fr.chart.chartattr.Plot;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.chart.fun.impl.AbstractIndependentChartUIWithAPILevel;
import com.fr.design.chart.series.SeriesCondition.impl.FunnelPlotDataSeriesConditionPane;
import com.fr.design.condition.ConditionAttributesPane;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane;
@ -34,6 +36,10 @@ public class FunnelIndependentChartInterface extends AbstractIndependentChartUIW
return new FunnelSeriesPane(parent, plot);
}
public ConditionAttributesPane getPlotConditionPane(Plot plot){
return new FunnelPlotDataSeriesConditionPane();
}
/**
*图标路径
* @return 图标路径

67
designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java

@ -1,10 +1,10 @@
package com.fr.design.mainframe.chart.gui;
import com.fr.base.BaseUtils;
import com.fr.chart.base.AttrChangeConfig;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.chartattr.SwitchState;
import com.fr.chart.base.AttrChangeConfig;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.dialog.DialogActionListener;
import com.fr.design.dialog.UIDialog;
@ -53,19 +53,14 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
private ChartTypePane parent = null;
//记录鼠标当前是否在操作添加按钮
private boolean mouseOnChartTypeButtonPane = false;
//配置窗口属性
private UIMenuNameableCreator configCreator;
/**
* 鼠标事件是否在这个面板
* @return 返回是否
*/
public boolean isMouseOnChartTypeButtonPane() {
return this.mouseOnChartTypeButtonPane;
}
//处理 编辑一个button时,选中另一个button的问题.
//stopEditing不能直接relayout,否则click事件不响应了.
//所以:stopEditing--选中其他button则响应click之后relayout;普通失焦则直接relayout.
private boolean pressOtherButtonWhenEditing = false;
// private AWTEventListener awt = new AWTEventListener() {
// public void eventDispatched(AWTEvent event) {
@ -122,7 +117,6 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
private void initAddButton() {
addButton.setPreferredSize(new Dimension(20, 20));
addButton.addActionListener(addListener);
addButton.addMouseListener(mouseListener);
}
private void initConfigButton() {
@ -133,7 +127,6 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
ActionListener addListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mouseOnChartTypeButtonPane = true;
String name = getNewChartName();
ChartChangeButton button = new ChartChangeButton(name);// some set selected
@ -189,15 +182,6 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
}
};
MouseListener mouseListener = new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
super.mouseExited(e);
mouseOnChartTypeButtonPane = false;
}
};
private String getNewChartName() {
int count = indexList.size() + 1;
while (true) {
@ -352,12 +336,19 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
if (currentEditingEditor != null) {
String newName = currentEditingEditor.getText();
int selectedIndex = editingCollection.getSelectedIndex();
ChartChangeButton button = indexList.get(selectedIndex);
button.isMoveOn = false;
if (!ComparatorUtils.equals(editingCollection.getChartName(selectedIndex), newName)) {
editingCollection.setChartName(selectedIndex, newName);
HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().fireTargetModified();
button.changeChartName(newName);
}
buttonPane.remove(currentEditingEditor);
currentEditingEditor = null;
if(!pressOtherButtonWhenEditing) {
layoutPane(buttonPane);
}
}
}
@ -375,11 +366,25 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
buttonName = name;
this.setToolTipText(name);
nameField.addActionListener(new ActionListener() {
nameField.addActionListener(new ActionListener() {//enter
@Override
public void actionPerformed(ActionEvent e) {
pressOtherButtonWhenEditing = false;
stopEditing();
populateBean(editingCollection);
}
});
nameField.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
}
@Override
public void focusLost(FocusEvent e) {//编辑状态lost才走这边
if (currentEditingEditor != null ) {
stopEditing();
}
}
});
}
@ -388,6 +393,11 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
return buttonName;
}
private void changeChartName(String name) {
this.setText(name);
buttonName = name;
}
public Dimension getPreferredSize() {
return new Dimension(B_W, B_H);
}
@ -467,17 +477,20 @@ public class ChartTypeButtonPane extends BasicBeanPane<ChartCollection> implemen
@Override
public void mouseClicked(MouseEvent e) {
mouseClick(e);
mouseOnChartTypeButtonPane = true;
if(pressOtherButtonWhenEditing){
relayoutPane();
pressOtherButtonWhenEditing = false;
}
}
public void mouseEntered(MouseEvent e) {
checkMoveOn(true);
mouseOnChartTypeButtonPane = true;
pressOtherButtonWhenEditing = currentEditingEditor != null;
}
public void mouseExited(MouseEvent e) {
checkMoveOn(false);
mouseOnChartTypeButtonPane = false;
pressOtherButtonWhenEditing = false;
}
};
}

10
designer_form/src/com/fr/design/designer/beans/adapters/layout/FRAbsoluteLayoutAdapter.java

@ -308,19 +308,23 @@ public class FRAbsoluteLayoutAdapter extends FRBodyLayoutAdapter {
* @param y 坐标y
*/
public void fix(XCreator creator ,int x, int y) {
int height = creator.getHeight();
int width = creator.getWidth();
if (x < 0) {
width += x;
x = 0;
} else if (x + creator.getWidth() > container.getWidth()) {
x = container.getWidth() - creator.getWidth();
width = container.getWidth() - x;
}
if (y < 0) {
height += y;
y = 0;
} else if (y + creator.getHeight() > container.getHeight()) {
y = container.getHeight() - creator.getHeight();
height = container.getHeight() - y;
}
creator.setLocation(x, y);
creator.setBounds(x, y, width, height);
}
@Override

67
designer_form/src/com/fr/design/designer/beans/adapters/layout/FRFitLayoutAdapter.java

@ -24,6 +24,7 @@ import com.fr.design.designer.properties.FRFitLayoutConstraints;
import com.fr.design.designer.properties.FRFitLayoutPropertiesGroupModel;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.mainframe.JForm;
import com.fr.design.utils.ComponentUtils;
import com.fr.form.ui.LayoutBorderStyle;
import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget;
import com.fr.form.ui.container.WLayout;
@ -44,6 +45,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 构造函数
*
* @param container XWFitLayout容器
*/
public FRFitLayoutAdapter(XLayoutContainer container) {
@ -104,7 +106,6 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
}
private void addParentCreator(XCreator child) {
XLayoutContainer parentPanel = child.initCreatorWrapper(minHeight);
container.add(parentPanel, child.toData().getWidgetName());
@ -112,6 +113,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 能否对应位置放置当前组件
*
* @param creator 组件
* @param x 添加的位置x该位置是相对于container的
* @param y 添加的位置y该位置是相对于container的
@ -162,6 +164,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 是否在组件边缘
*
* @param x 横坐标
* @param y 纵坐标
* @return 是否在组件边缘
@ -178,6 +181,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 是否在组件边缘
*
* @param x 横坐标
* @param y 纵坐标
* @param container 参照组件
@ -234,6 +238,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 判断是否鼠标在组件的三等分区域如果组件在布局管理器中间上下左右都可能会三等分
*
* @param parentComp 鼠标所在区域的组件
* @param x 坐标x
* @param y 坐标y
@ -245,6 +250,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 是否为组件交叉点区域 或者是相邻三组建中间点
*
* @param currentComp 当前组件
* @param x 坐标x
* @param y 坐标y
@ -261,6 +267,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
protected void clearCompsList() {
super.clearCompsList();
}
private Rectangle adjustBackupBound(Rectangle backupBound, XWCardMainBorderLayout mainLayout) {
// 参数界面高度对纵坐标产生的影响
JForm jform = (JForm) (HistoryTemplateListPane.getInstance().getCurrentEditingTemplate());
@ -284,6 +291,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 拖拽控件边框后根据控件的大小尺寸进行相关组件的调整
*
* @param creator 组件
*/
@Override
@ -328,6 +336,43 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
updateCreatorBackBound();
}
/**
* 拖拽控件边框后根据控件的大小尺寸进行相关组件的调整
*
* @param backupBound 边界备份
* @param bounds 组件边界
* @param xCreator 组件
* @param row 选中的行
* @param difference 偏移量
*/
public void calculateBounds(Rectangle backupBound, Rectangle bounds, XCreator xCreator, int row, int difference) {
Rectangle rc = new Rectangle(0,0,0,0);
XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xCreator);
if (parent != null) {
Rectangle rec = ComponentUtils.getRelativeBounds(parent);
rc.x = rec.x;
rc.y = rec.y;
}
int x = backupBound.x - rc.x, y = backupBound.y - rc.y;
//处理左右延伸
switch (row) {
case 0:
if (backupBound.width + backupBound.x == container.getWidth() - margin.getRight() +rc.x) {
x += difference;
}
break;
case 1:
if(backupBound.y + backupBound.height == container.getHeight() - margin.getBottom() +rc.y){
y += difference;
}
break;
}
bounds.setLocation(x,y);
xCreator.setBackupBound(backupBound);
xCreator.setBounds(bounds);
this.fix(xCreator);
}
private void dealLeft(Rectangle backupBound, int x, int[] posXs, int difference, XCreator creator) {
if (backupBound.x == margin.getLeft()) {
return;
@ -614,11 +659,13 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
//重新计算上下两侧组件size、point
if (CalculateUpRelatComponent(difference)) {
CalculateDownRelatComponent(objY + difference, -difference);
};
}
;
}
/**
* 新拖入组件时计算调整其他关联组件位置大小
*
* @param child 新拖入的组件
* @param x 鼠标所在x坐标
* @param y 鼠标所在y坐标
@ -659,6 +706,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 三等分区域时调整相关联的组件
*
* @param currentComp 鼠标所在组件
* @param child 待插入组件
*/
@ -677,6 +725,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 重新计算内部组件大小
*
* @param x 坐标x
* @param y 坐标y
* @param creatorWidth 删除的组件之前所在布局的宽度
@ -888,9 +937,9 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 拖拽组件时遍历某一侧组件得到该侧组件能够缩放的最小宽度tab布局最小宽度 = 内部组件数 * 单个组件最小宽度
*
* @param list 某一侧组件的集合 leftComps<Component>
* @return int 最小宽度
*
*/
private int getCompsMinWidth(List<?> list) {
return getMaxCompsNum(list, true) * WLayout.MIN_WIDTH;
@ -898,9 +947,9 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 拖拽组件遍历某一侧得到该侧组件能够缩放的最小高度tab布局最小高度 = 内部组件数 * 单个组件最小高度 + 标题高度
*
* @param list 某一侧组件集合
* @return int 最小高度
*
*/
private int getCompsMinHeight(List<?> list) {
for (int i = 0; i < list.size(); i++) {
@ -915,10 +964,10 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 根据子组件的横()坐标获取某一侧组件的最大内部组件数
*
* @param list 某一侧组件集合
* @param isHor 是否以横坐标为准
* @return int 最大内部组件数
*
*/
private int getMaxCompsNum(List<?> list, boolean isHor) {
int maxCompNums = 1;
@ -940,6 +989,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 根据偏移量缩放内部组件大小,tab布局用到
*
* @param creator tab布局
* @param offset 偏移量
* @param isHor 是否为横向拖拽
@ -998,6 +1048,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 删除或拉伸控件右边框 调整右侧组件位置大小
*
* @param objX 调整后的坐标x
* @param objWidth 调整后的宽度
*/
@ -1016,9 +1067,9 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 实际拖拽偏移量是否超出了可调整的宽度范围
*
* @param offset 实际偏移量
* @return boolean 是否超出调整范围
*
*/
private boolean isBeyondAdjustWidthScope(int offset) {
boolean isBeyondScope = false;
@ -1074,9 +1125,9 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 实际拖拽偏移量是否超出了可调整的高度范围
*
* @param offset 实际偏移量
* @return boolean 是否超出调整范围
*
*/
private boolean isBeyondAdjustHeightScope(int offset) {
boolean isBeyondScope = false;
@ -1095,6 +1146,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
}
return false;
}
/**
* 删除或拉伸上边框 调整上方的组件位置大小
*/
@ -1115,6 +1167,7 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
/**
* 不调整只计算位置
*
* @return child的位置
*/
public int[] getChildPosition(Component currentComp, XCreator child, int x, int y) {

2
designer_form/src/com/fr/design/designer/creator/XChartEditor.java

@ -86,7 +86,7 @@ public class XChartEditor extends XBorderStyleWidgetCreator {
new CRPropertyDescriptor("widgetName", this.data.getClass()).setI18NName(Inter
.getLocText("Form-Widget_Name")),
new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass(
WLayoutBorderStyleEditor.class).setRendererClass(LayoutBorderStyleRenderer.class).setI18NName(
WLayoutBorderStyleEditor.class).setI18NName(
Inter.getLocText("Chart-Style_Name")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced")
.setPropertyChangeListener(new PropertyChangeAdapter() {

2
designer_form/src/com/fr/design/designer/creator/XElementCase.java

@ -282,11 +282,11 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme
* @param e 点击事件
*/
public void respondClick(EditingMouseListener editingMouseListener,MouseEvent e){
HelpDialogManager.getInstance().setPane(coverPanel);
super.respondClick(editingMouseListener, e);
if (this.isHelpBtnOnFocus()) {
coverPanel.setMsgDisplay(e);
} else {
coverPanel.destroyHelpDialog();
switchTab(e, editingMouseListener);
}
}

4
designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java

@ -66,7 +66,7 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme
new CRPropertyDescriptor("widgetName", this.data.getClass()).setI18NName(Inter
.getLocText("FR-Designer_Form-Widget_Name")),
new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass(
WLayoutBorderStyleEditor.class).setRendererClass(LayoutBorderStyleRenderer.class).setI18NName(
WLayoutBorderStyleEditor.class).setI18NName(
Inter.getLocText("FR-Engine_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced")
.setPropertyChangeListener(new PropertyChangeAdapter() {
@ -76,7 +76,7 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme
}
}),
new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class)
.setRendererClass(PaddingMarginCellRenderer.class).setI18NName(Inter.getLocText("FR-Designer_Layout-Padding"))
.setI18NName(Inter.getLocText("FR-Designer_Layout-Padding"))
.putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"),
};
}

2
designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java

@ -283,7 +283,7 @@ public class XWCardLayout extends XLayoutContainer {
}
}),
new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass(
CardTagWLayoutBorderStyleEditor.class).setRendererClass(LayoutBorderStyleRenderer.class).setI18NName(
CardTagWLayoutBorderStyleEditor.class).setI18NName(
Inter.getLocText("FR-Engine_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced")
.setPropertyChangeListener(new PropertyChangeAdapter() {

2
designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java

@ -64,7 +64,7 @@ public class XWTabFitLayout extends XWFitLayout {
new CRPropertyDescriptor("widgetName", this.data.getClass()).setI18NName(Inter
.getLocText("FR-Designer_Form-Widget_Name")),
new CRPropertyDescriptor("margin", this.data.getClass()).setEditorClass(PaddingMarginEditor.class)
.setRendererClass(PaddingMarginCellRenderer.class).setI18NName(Inter.getLocText("FR-Designer_Layout-Padding"))
.setI18NName(Inter.getLocText("FR-Designer_Layout-Padding"))
.putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"),
};
}

70
designer_form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java

@ -9,6 +9,7 @@ import com.fr.design.mainframe.widget.editors.LayoutTypeEditor;
import com.fr.design.utils.gui.LayoutUtils;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WBodyLayoutType;
import com.fr.general.FRLogger;
import com.fr.general.FRScreen;
import com.fr.general.Inter;
@ -92,6 +93,43 @@ public class FRAbsoluteBodyLayoutPropertiesGroupModel extends FRAbsoluteLayoutPr
} else {
if (row == 0) {
if (state == WBodyLayoutType.FIT.getTypeValue()) {
return switch2FitBodyLayout();
}
}
if (row == 1) {
layout.setCompState(state);
return true;
}
return false;
}
}
int state = 0;
if(value instanceof Integer) {
state = (Integer)value;
}
if (column == 0 || state < 0) {
return false;
} else {
if (row == 0) {
layout.setCompState(state);
return true;
}
return false;
}
}
/**
* 是否可编辑
* @param row
* @return
*/
@Override
public boolean isEditable(int row) {
return true;
}
private boolean switch2FitBodyLayout() {
try {
XWFitLayout xfl = (XWFitLayout) xwAbsoluteLayout.getBackupParent();
//备份一下组件间隔
int compInterval = xfl.toData().getCompInterval();
@ -133,40 +171,14 @@ public class FRAbsoluteBodyLayoutPropertiesGroupModel extends FRAbsoluteLayoutPr
xfl.toData().setLayoutType(WBodyLayoutType.FIT);
return true;
}
}
if (row == 1) {
layout.setCompState(state);
return true;
}
catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
return false;
}
}
int state = 0;
if(value instanceof Integer) {
state = (Integer)value;
}
if (column == 0 || state < 0) {
return false;
} else {
if (row == 0) {
layout.setCompState(state);
return true;
}
return false;
}
}
/**
* 是否可编辑
* @param row
* @return
*/
@Override
public boolean isEditable(int row) {
return true;
}
// 把绝对布局中的元素按规则移动到自适应布局中
// 规则:各元素按顺序放置,其中每行最多4个元素,超出则换行,各元素均分body的高度和宽度
private void moveComponents2FitLayout(XWFitLayout xwFitLayout) {
int eachRowCount = 4;
Component[] components = xwFitLayout.getComponents();

42
designer_form/src/com/fr/design/designer/properties/FRFitLayoutConstraints.java

@ -1,10 +1,18 @@
package com.fr.design.designer.properties;
import com.fr.design.designer.beans.AdapterBus;
import com.fr.design.designer.beans.adapters.layout.FRFitLayoutAdapter;
import com.fr.design.designer.creator.XCreatorUtils;
import com.fr.design.designer.creator.XLayoutContainer;
import com.fr.design.mainframe.FormDesigner;
import com.fr.design.mainframe.WidgetPropertyPane;
import com.fr.design.mainframe.widget.editors.IntegerPropertyEditor;
import com.fr.design.mainframe.widget.editors.PropertyCellEditor;
import com.fr.design.designer.beans.ConstraintsGroupModel;
import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XWFitLayout;
import com.fr.design.utils.ComponentUtils;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WFitLayout;
import com.fr.general.Inter;
@ -23,6 +31,7 @@ import java.awt.*;
//控件在自适应布局中宽度、高度属性,7.1.1不可编辑
public class FRFitLayoutConstraints implements ConstraintsGroupModel {
private static final int MINHEIGHT = XCreator.SMALL_PREFERRED_SIZE.height;
private static final int MINWIDTH = XCreator.SMALL_PREFERRED_SIZE.width;
private static final int ROWNUM = 2;
private DefaultTableCellRenderer renderer;
@ -80,12 +89,18 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel {
public boolean setValue(Object value, int row, int column) {
if (column == 1) {
int v = value == null ? 0 : ((Number) value).intValue();
Rectangle bounds = new Rectangle(xCreator.getBounds());
int difference = 0;
Rectangle bounds = getBounds();
switch (row) {
case 0:
if(v < MINWIDTH){
JOptionPane.showMessageDialog(null, Inter.getLocText("Min-Width") + Integer.toString(MINWIDTH));
v = xCreator.getWidth();
}
if (bounds.width == v){
return false;
}
difference = bounds.width - v;
bounds.width = v;
break;
case 1:
@ -96,25 +111,44 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel {
if (bounds.height == v){
return false;
}
difference = bounds.height - v;
bounds.height = v;
break;
}
WFitLayout wFitLayout = parent.toData();
wFitLayout.setBounds(xCreator.toData(),bounds);
xCreator.setBounds(bounds);
FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner();
Rectangle backupBounds = getBounds();
FRFitLayoutAdapter layoutAdapter = (FRFitLayoutAdapter) AdapterBus.searchLayoutAdapter(formDesigner, xCreator);
if (layoutAdapter != null) {
layoutAdapter.calculateBounds(backupBounds, bounds, xCreator, row, difference);
}
return true;
} else {
return false;
}
}
public Rectangle getBounds(){
Rectangle bounds = new Rectangle(xCreator.getBounds());
XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xCreator);
if (parent == null) {
return bounds;
}
Rectangle rec = ComponentUtils.getRelativeBounds(parent);
bounds.x += rec.x;
bounds.y += rec.y;
return bounds;
}
/**
* 该行是否可编辑
* @param row
* @return 第row行可编辑返回true否则返回false
*/
public boolean isEditable(int row) {
return false;
return true;
}
}

11
designer_form/src/com/fr/design/designer/properties/FRFitLayoutPropertiesGroupModel.java

@ -17,6 +17,7 @@ import com.fr.form.ui.container.WAbsoluteBodyLayout;
import com.fr.form.ui.container.WAbsoluteLayout;
import com.fr.form.ui.container.WBodyLayoutType;
import com.fr.form.ui.container.WFitLayout;
import com.fr.general.FRLogger;
import com.fr.general.Inter;
import javax.swing.table.DefaultTableCellRenderer;
@ -145,7 +146,7 @@ public class FRFitLayoutPropertiesGroupModel implements GroupModel {
layout.setCompState(state);
return true;
}else if (row == 0) {
layout.setLayoutType(WBodyLayoutType.parse(state));
try {
if (state == WBodyLayoutType.ABSOLUTE.getTypeValue()) {
WAbsoluteBodyLayout wAbsoluteBodyLayout = new WAbsoluteBodyLayout("body");
wAbsoluteBodyLayout.setCompState(WAbsoluteLayout.STATE_FIXED);
@ -167,12 +168,16 @@ public class FRFitLayoutPropertiesGroupModel implements GroupModel {
FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner();
formDesigner.getSelectionModel().setSelectedCreators(
FormSelectionUtils.rebuildSelection(xfl, new Widget[]{wAbsoluteBodyLayout}));
}
else {
} else {
FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner();
formDesigner.getSelectionModel().setSelectedCreators(
FormSelectionUtils.rebuildSelection(xfl, new Widget[]{xfl.toData()}));
}
}catch (Exception e){
FRLogger.getLogger().error(e.getMessage());
return false;
}
layout.setLayoutType(WBodyLayoutType.parse(state));
return true;
}
return false;

2
designer_form/src/com/fr/design/gui/xpane/LayoutBorderPane.java

@ -280,7 +280,7 @@ public class LayoutBorderPane extends BasicPane {
Constants.LINE_THICK, //3px
};
public final static String[] BORDER_TYPE = new String[]{Inter.getLocText("FR-Designer-Widget-Style_Standard"), Inter.getLocText("FR-Designer-Widget-Style_Title")};
public final static String[] BORDER_TYPE = new String[]{Inter.getLocText("FR-Designer-Widget-Style_Standard"), Inter.getLocText("FR-Designer-Widget-Style_Custom")};
public final static String[] BORDER_STYLE= new String[]{Inter.getLocText("FR-Designer-Widget-Style_Common"), Inter.getLocText("FR-Designer-Widget-Style_Shadow")};
private final static Dimension BUTTON_SIZE = new Dimension(24, 20);

42
designer_form/src/com/fr/design/mainframe/CoverReportPane.java

@ -1,8 +1,6 @@
package com.fr.design.mainframe;
import com.fr.design.constants.UIConstants;
import com.fr.design.designer.beans.events.DesignerEditListener;
import com.fr.design.designer.beans.events.DesignerEvent;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.icon.IconPathConstants;
import com.fr.form.share.ShareConstants;
@ -13,6 +11,8 @@ import com.fr.stable.StringUtils;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* 报表块的封面如果后面所有的组件都有帮助信息的话就抽接口吧
@ -43,18 +43,6 @@ public class CoverReportPane extends CoverPane implements HelpDialogHandler{
public CoverReportPane(String helpMsg) {
super();
this.helpMsg = helpMsg;
add(controlButton);
// if (WidgetPropertyPane.getInstance().getEditingFormDesigner() != null) {
// WidgetPropertyPane.getInstance().getEditingFormDesigner().addDesignerEditListener(new DesignerEditListener() {
// @Override
// public void fireCreatorModified(DesignerEvent evt) {
// if (evt.getCreatorEventID() == (DesignerEvent.CREATOR_DELETED)
// || evt.getCreatorEventID() == (DesignerEvent.CREATOR_RESIZED)) {
// destroyHelpDialog();
// }
// }
// });
// }
}
public String getHelpMsg() {
@ -63,12 +51,16 @@ public class CoverReportPane extends CoverPane implements HelpDialogHandler{
public void setHelpMsg(String helpMsg) {
this.helpMsg = helpMsg;
//帮助信息为空就不显示帮助按钮
if (StringUtils.isNotEmpty(helpMsg)) {
add(controlButton);
}
}
public void setMsgDisplay(MouseEvent e) {
if (helpDialog == null) {
controlMode = IOUtils.readIcon(IconPathConstants.TD_EL_SHARE_CLOSE_ICON_PATH);
controlButton.repaint();
// controlMode = IOUtils.readIcon(IconPathConstants.TD_EL_SHARE_CLOSE_ICON_PATH);
controlButton.setVisible(false);
helpDialog = new ElementCaseHelpDialog(DesignerContext.getDesignerFrame(), helpMsg);
double screenValue = FRScreen.getByDimension(Toolkit.getDefaultToolkit().getScreenSize()).getValue();
int offsetX = 0;
@ -80,12 +72,14 @@ public class CoverReportPane extends CoverPane implements HelpDialogHandler{
int rY = 165 + e.getY();//165是设计器最上面几个面板的高度
helpDialog.setLocationRelativeTo(DesignerContext.getDesignerFrame(), rX, rY);
helpDialog.showWindow();
HelpDialogManager.getInstance().setPane(this);
} else {
controlMode = IOUtils.readIcon(IconPathConstants.TD_EL_SHARE_HELP_ICON_PATH);
controlButton.repaint();
helpDialog.dispose();
helpDialog.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
helpDialog = null;
controlButton.setVisible(true);
}
});
HelpDialogManager.getInstance().setPane(this);
}
}
@ -135,8 +129,8 @@ public class CoverReportPane extends CoverPane implements HelpDialogHandler{
@Override
public void setVisible(boolean aFlag) {
super.setVisible(aFlag);
if (aFlag) {
HelpDialogManager.getInstance().setPane(this);
}
// if (aFlag) {
// HelpDialogManager.getInstance().setPane(this);
// }
}
}

10
designer_form/src/com/fr/design/mainframe/ElementCaseHelpDialog.java

@ -3,6 +3,7 @@ package com.fr.design.mainframe;
import com.fr.design.dialog.UIDialog;
import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.itextarea.UITextArea;
import com.fr.general.Inter;
import javax.swing.*;
import java.awt.*;
@ -15,7 +16,7 @@ import java.awt.*;
public class ElementCaseHelpDialog extends UIDialog {
private static final int OUTER_WIDTH = 190;
private static final int OUTER_HEIGHT = 120;
private static final int OUTER_HEIGHT = 280;
private String helpMsg;
@ -25,7 +26,6 @@ public class ElementCaseHelpDialog extends UIDialog {
public ElementCaseHelpDialog(Frame parent, String helpMsg) {
super(parent);
this.helpMsg = helpMsg;
setUndecorated(true);
initHelpArea();
JPanel panel = (JPanel) getContentPane();
initComponents(panel);
@ -37,21 +37,23 @@ public class ElementCaseHelpDialog extends UIDialog {
textArea.setEditable(false);
textArea.setBorder(null);
helpArea = new UIScrollPane(textArea);
helpArea.setBounds(0, 0, 190, 120);
helpArea.setBounds(0, 0, OUTER_WIDTH, OUTER_HEIGHT);
helpArea.setBorder(null);
}
private void initComponents(JPanel contentPane) {
contentPane.setLayout(new BorderLayout());
add(helpArea, BorderLayout.CENTER);
this.applyClosingAction();
this.setTitle(Inter.getLocText("FR-Designer_Help"));
}
/**
* 打开帮助框
*/
public void showWindow() {
setVisible(true);
this.setResizable(false);
setVisible(true);
}
/**

Loading…
Cancel
Save