|
|
|
@ -83,6 +83,7 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
|
|
|
|
|
private static final int SUBMIT_BUTTON_H_LOCATION = 270; |
|
|
|
|
private static final int PARA_IMAGE_SHIFT_X = -4; |
|
|
|
|
private static final int FORM_AREA_PADDING_LEFT = 13; |
|
|
|
|
private int addableRegionY; |
|
|
|
|
|
|
|
|
|
private static Image paraImage = BaseUtils.readImage("/com/fr/design/images/form/parameter.png"); |
|
|
|
|
|
|
|
|
@ -412,10 +413,30 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
|
|
|
|
|
if (layoutContainer == null) { |
|
|
|
|
layoutContainer = new XWParameterLayout(); |
|
|
|
|
} |
|
|
|
|
refreshAddableRegion(layoutContainer); |
|
|
|
|
layoutContainer.setSize(LARGE_PREFERRED_SIZE); |
|
|
|
|
setRootComponent(layoutContainer); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param layoutContainer |
|
|
|
|
* @Description: 为了不覆盖以前的组件,所以要计算可以添加组件的区域 |
|
|
|
|
* @return: |
|
|
|
|
* @Author: Henry.Wang |
|
|
|
|
* @date: 2020/7/15 15:12 |
|
|
|
|
*/ |
|
|
|
|
public void refreshAddableRegion(XLayoutContainer layoutContainer) { |
|
|
|
|
addableRegionY = 0; |
|
|
|
|
for (int i = 0; i < layoutContainer.getComponentCount(); i++) { |
|
|
|
|
Rectangle rectangle = layoutContainer.getComponent(i).getBounds(); |
|
|
|
|
if (addableRegionY < rectangle.y + rectangle.height) { |
|
|
|
|
addableRegionY = rectangle.y + rectangle.height; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
int vGap = V_COMPONENT_GAP - (int) XCreator.SMALL_PREFERRED_SIZE.getHeight(); |
|
|
|
|
addableRegionY = Math.max(0, addableRegionY - FIRST_V_LOCATION + (int) (XCreator.SMALL_PREFERRED_SIZE.getHeight() / 2) + vGap); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 是否是报表的参数面板 |
|
|
|
|
* |
|
|
|
@ -583,14 +604,15 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
|
|
|
|
|
label.setWidgetName("Label" + name); |
|
|
|
|
label.setWidgetValue(new WidgetValue(name + ":")); |
|
|
|
|
XCreator xCreator = XCreatorUtils.createXCreator(label); |
|
|
|
|
if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) |
|
|
|
|
+ FIRST_H_LOCATION, FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) { |
|
|
|
|
int x = H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) + FIRST_H_LOCATION; |
|
|
|
|
int y = addableRegionY + FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE); |
|
|
|
|
if (!(this.autoAddComponent(xCreator, x, y))) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
EditorHolder editor = new EditorHolder(parameter); |
|
|
|
|
xCreator = XCreatorUtils.createXCreator(editor); |
|
|
|
|
if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) |
|
|
|
|
+ SECOND_H_LOCATION, FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) { |
|
|
|
|
x = H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) + SECOND_H_LOCATION; |
|
|
|
|
if (!(this.autoAddComponent(xCreator, x, y))) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
@ -646,16 +668,17 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP
|
|
|
|
|
label.setWidgetValue(new WidgetValue(parameterArray[i].getName() + ":")); |
|
|
|
|
XCreator xCreator = XCreatorUtils.createXCreator(label); |
|
|
|
|
|
|
|
|
|
if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) |
|
|
|
|
+ FIRST_H_LOCATION, FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) { |
|
|
|
|
int x = H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) + FIRST_H_LOCATION; |
|
|
|
|
int y = addableRegionY + FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE); |
|
|
|
|
if (!(this.autoAddComponent(xCreator, x, y))) { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
// 每行显示5组
|
|
|
|
|
EditorHolder editor = new EditorHolder(parameterArray[i]); |
|
|
|
|
editor.setWidgetName(parameterArray[i].getName()); |
|
|
|
|
xCreator = XCreatorUtils.createXCreator(editor); |
|
|
|
|
if (!(this.autoAddComponent(xCreator, H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) |
|
|
|
|
+ SECOND_H_LOCATION, FIRST_V_LOCATION + V_COMPONENT_GAP * (currentIndex / NUM_IN_A_LINE)))) { |
|
|
|
|
x = H_COMPONENT_GAP * (currentIndex % NUM_IN_A_LINE) + SECOND_H_LOCATION; |
|
|
|
|
if (!(this.autoAddComponent(xCreator, x, y))) { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
currentIndex++; |
|
|
|
|