|
|
@ -18,7 +18,6 @@ import com.fr.form.ui.*; |
|
|
|
import com.fr.general.ComparatorUtils; |
|
|
|
import com.fr.general.ComparatorUtils; |
|
|
|
import com.fr.general.Inter; |
|
|
|
import com.fr.general.Inter; |
|
|
|
import com.fr.stable.ArrayUtils; |
|
|
|
import com.fr.stable.ArrayUtils; |
|
|
|
import com.fr.stable.OperatingSystem; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.swing.*; |
|
|
|
import javax.swing.*; |
|
|
|
import java.awt.*; |
|
|
|
import java.awt.*; |
|
|
@ -27,14 +26,14 @@ import java.util.ArrayList; |
|
|
|
import java.util.Iterator; |
|
|
|
import java.util.Iterator; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
|
public class FormParaWidgetPane extends JPanel{ |
|
|
|
public class FormParaWidgetPane extends JPanel { |
|
|
|
private static FormParaWidgetPane THIS; |
|
|
|
private static FormParaWidgetPane THIS; |
|
|
|
private List<WidgetOption> predifinedwidgeList = new ArrayList<WidgetOption>(); |
|
|
|
private List<WidgetOption> predifinedwidgeList = new ArrayList<WidgetOption>(); |
|
|
|
|
|
|
|
|
|
|
|
private JWindow chartTypeWindow; |
|
|
|
private JWindow chartTypeWindow; |
|
|
|
private JWindow widgetTypeWindow; |
|
|
|
private JWindow widgetTypeWindow; |
|
|
|
private WidgetOption[] widgetOptions = null; |
|
|
|
private WidgetOption[] widgetOptions = null; |
|
|
|
private WidgetOption[] chartOptions = null; |
|
|
|
private WidgetOption[] chartOptions = null; |
|
|
|
private WidgetOption[] layoutOptions = null; |
|
|
|
private WidgetOption[] layoutOptions = null; |
|
|
|
private int widgetButtonWidth = 22; |
|
|
|
private int widgetButtonWidth = 22; |
|
|
|
private int widgetButtonHeight = 20; |
|
|
|
private int widgetButtonHeight = 20; |
|
|
@ -46,49 +45,49 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
//预定义控件最多显示20行
|
|
|
|
//预定义控件最多显示20行
|
|
|
|
private int preWidgetShowMaxRow = 20; |
|
|
|
private int preWidgetShowMaxRow = 20; |
|
|
|
//显示8个图表组件
|
|
|
|
//显示8个图表组件
|
|
|
|
private static final int commonChartNum = 8; |
|
|
|
private static final int COMMON_CHAR_NUM = 8; |
|
|
|
//显示10个普通控件
|
|
|
|
//显示10个普通控件
|
|
|
|
private int commonWidgetNum = 10; |
|
|
|
private int commonWidgetNum = 10; |
|
|
|
private JSeparator jSeparatorPara; |
|
|
|
private JSeparator jSeparatorPara; |
|
|
|
private JSeparator jSeparatorChart; |
|
|
|
private JSeparator jSeparatorChart; |
|
|
|
private JSeparator jSeparatorLayout; |
|
|
|
private JSeparator jSeparatorLayout; |
|
|
|
|
|
|
|
|
|
|
|
private UILabel paraLabel ; |
|
|
|
private UILabel paraLabel; |
|
|
|
|
|
|
|
|
|
|
|
private FormDesigner designer; |
|
|
|
private FormDesigner designer; |
|
|
|
|
|
|
|
|
|
|
|
public static final FormParaWidgetPane getInstance(FormDesigner designer) { |
|
|
|
public static final FormParaWidgetPane getInstance(FormDesigner designer) { |
|
|
|
if(THIS == null) { |
|
|
|
if (THIS == null) { |
|
|
|
THIS = new FormParaWidgetPane(); |
|
|
|
THIS = new FormParaWidgetPane(); |
|
|
|
} |
|
|
|
} |
|
|
|
THIS.designer = designer; |
|
|
|
THIS.designer = designer; |
|
|
|
THIS.setTarget(designer); |
|
|
|
THIS.setTarget(designer); |
|
|
|
return THIS; |
|
|
|
return THIS; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public FormParaWidgetPane() { |
|
|
|
public FormParaWidgetPane() { |
|
|
|
setLayout(new FlowLayout(FlowLayout.LEFT)); |
|
|
|
setLayout(new FlowLayout(FlowLayout.LEFT)); |
|
|
|
DesignerContext.getDesignerFrame().getCenterTemplateCardPane().addComponentListener(new ComponentAdapter() { |
|
|
|
DesignerContext.getDesignerFrame().getCenterTemplateCardPane().addComponentListener(new ComponentAdapter() { |
|
|
|
public void componentResized(ComponentEvent e) { |
|
|
|
public void componentResized(ComponentEvent e) { |
|
|
|
if (FormParaWidgetPane.this.getParent() != null) { |
|
|
|
if (FormParaWidgetPane.this.getParent() != null) { |
|
|
|
JPanel fother = (JPanel)FormParaWidgetPane.this.getParent(); |
|
|
|
JPanel fother = (JPanel) FormParaWidgetPane.this.getParent(); |
|
|
|
int delta_wdith = 0; |
|
|
|
int delta_wdith = 0; |
|
|
|
for (int i = 0; i < fother.getComponentCount() - 1; i ++) { |
|
|
|
for (int i = 0; i < fother.getComponentCount() - 1; i++) { |
|
|
|
delta_wdith += fother.getComponent(i).getWidth(); |
|
|
|
delta_wdith += fother.getComponent(i).getWidth(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(delta_wdith == 0){ |
|
|
|
if (delta_wdith == 0) { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Dimension d = fother.getSize(); |
|
|
|
Dimension d = fother.getSize(); |
|
|
|
setPreferredSize(new Dimension(d.width - delta_wdith, d.height)); |
|
|
|
setPreferredSize(new Dimension(d.width - delta_wdith, d.height)); |
|
|
|
LayoutUtils.layoutContainer(fother); |
|
|
|
LayoutUtils.layoutContainer(fother); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
initFormParaComponent(); |
|
|
|
initFormParaComponent(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void initFormParaComponent() { |
|
|
|
private void initFormParaComponent() { |
|
|
@ -97,16 +96,16 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
JPanel paraPane = new JPanel(new FlowLayout()); |
|
|
|
JPanel paraPane = new JPanel(new FlowLayout()); |
|
|
|
ToolBarButton paraButton = new paraButton(FormWidgetOption.PARAMETERCONTAINER); |
|
|
|
ToolBarButton paraButton = new paraButton(FormWidgetOption.PARAMETERCONTAINER); |
|
|
|
paraPane.add(paraButton); |
|
|
|
paraPane.add(paraButton); |
|
|
|
add(createNormalCombinationPane(paraPane,Inter.getLocText("FR-Designer_Parameter"))); |
|
|
|
add(createNormalCombinationPane(paraPane, Inter.getLocText("FR-Designer_Parameter"))); |
|
|
|
jSeparatorPara = createJSeparator(); |
|
|
|
jSeparatorPara = createJSeparator(); |
|
|
|
add(jSeparatorPara); |
|
|
|
add(jSeparatorPara); |
|
|
|
|
|
|
|
|
|
|
|
JPanel layoutPane = new JPanel(new FlowLayout()); |
|
|
|
JPanel layoutPane = new JPanel(new FlowLayout()); |
|
|
|
for(WidgetOption option : loadLayoutOptions()){ |
|
|
|
for (WidgetOption option : loadLayoutOptions()) { |
|
|
|
layoutPane.add(new ToolBarButton(option)); |
|
|
|
layoutPane.add(new ToolBarButton(option)); |
|
|
|
} |
|
|
|
} |
|
|
|
layoutPane.add(new ToolBarButton(FormWidgetOption.ELEMENTCASE)); |
|
|
|
layoutPane.add(new ToolBarButton(FormWidgetOption.ELEMENTCASE)); |
|
|
|
add(createNormalCombinationPane(layoutPane,Inter.getLocText("FR-Designer_Layout_Block_Blank"))); |
|
|
|
add(createNormalCombinationPane(layoutPane, Inter.getLocText("FR-Designer_Layout_Block_Blank"))); |
|
|
|
jSeparatorLayout = createJSeparator(); |
|
|
|
jSeparatorLayout = createJSeparator(); |
|
|
|
add(jSeparatorLayout); |
|
|
|
add(jSeparatorLayout); |
|
|
|
|
|
|
|
|
|
|
@ -114,8 +113,8 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
int totalChartNums = loadChartOptions().length; |
|
|
|
int totalChartNums = loadChartOptions().length; |
|
|
|
if (totalChartNums > 0) { |
|
|
|
if (totalChartNums > 0) { |
|
|
|
JPanel chartTypePane = new JPanel(new FlowLayout()); |
|
|
|
JPanel chartTypePane = new JPanel(new FlowLayout()); |
|
|
|
for (int i = 0;i < commonChartNum ;i++) { |
|
|
|
for (int i = 0; i < COMMON_CHAR_NUM; i++) { |
|
|
|
chartTypePane.add( new ToolBarButton(loadChartOptions()[i])); |
|
|
|
chartTypePane.add(new ToolBarButton(loadChartOptions()[i])); |
|
|
|
} |
|
|
|
} |
|
|
|
add(createChartCombinationPane(chartTypePane, Inter.getLocText("FR-Designer-Form-ToolBar_Chart"))); |
|
|
|
add(createChartCombinationPane(chartTypePane, Inter.getLocText("FR-Designer-Form-ToolBar_Chart"))); |
|
|
|
jSeparatorChart = createJSeparator(); |
|
|
|
jSeparatorChart = createJSeparator(); |
|
|
@ -123,115 +122,113 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
JPanel widgetPane = new JPanel(new FlowLayout()); |
|
|
|
JPanel widgetPane = new JPanel(new FlowLayout()); |
|
|
|
for (int i = 0;i < commonWidgetNum;i++) { |
|
|
|
for (int i = 0; i < commonWidgetNum; i++) { |
|
|
|
widgetPane.add(new ToolBarButton(loadWidgetOptions()[i])); |
|
|
|
widgetPane.add(new ToolBarButton(loadWidgetOptions()[i])); |
|
|
|
} |
|
|
|
} |
|
|
|
widgetPane.add(createJSeparator(20)); |
|
|
|
widgetPane.add(createJSeparator(20)); |
|
|
|
loadPredefinedWidget(); |
|
|
|
loadPredefinedWidget(); |
|
|
|
int num = Math.min(predifinedwidgeList.size(),preWidgetShowMaxNum); |
|
|
|
int num = Math.min(predifinedwidgeList.size(), preWidgetShowMaxNum); |
|
|
|
for (int i = 0 ;i < num ;i++) { |
|
|
|
for (int i = 0; i < num; i++) { |
|
|
|
widgetPane.add(new ToolBarButton(predifinedwidgeList.get(i))); |
|
|
|
widgetPane.add(new ToolBarButton(predifinedwidgeList.get(i))); |
|
|
|
} |
|
|
|
} |
|
|
|
add(createWidgetCombinationPane(widgetPane, Inter.getLocText("FR-Designer-Form-ToolBar_Widget"))); |
|
|
|
add(createWidgetCombinationPane(widgetPane, Inter.getLocText("FR-Designer-Form-ToolBar_Widget"))); |
|
|
|
add(createJSeparator()); |
|
|
|
add(createJSeparator()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void loadPredefinedWidget() { |
|
|
|
private void loadPredefinedWidget() { |
|
|
|
predifinedwidgeList.clear(); |
|
|
|
predifinedwidgeList.clear(); |
|
|
|
if(designer != null) { |
|
|
|
if (designer != null) { |
|
|
|
WidgetOption[] designerPre = designer.getDesignerMode().getPredefinedWidgetOptions(); |
|
|
|
WidgetOption[] designerPre = designer.getDesignerMode().getPredefinedWidgetOptions(); |
|
|
|
for(int i = 0; i < designerPre.length; i++) { |
|
|
|
for (int i = 0; i < designerPre.length; i++) { |
|
|
|
predifinedwidgeList.add(designerPre[i]); |
|
|
|
predifinedwidgeList.add(designerPre[i]); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
WidgetManagerProvider mgr = WidgetManager.getProviderInstance(); |
|
|
|
WidgetManagerProvider mgr = WidgetManager.getProviderInstance(); |
|
|
|
Iterator<String> nameIt = mgr.getWidgetConfigNameIterator(); |
|
|
|
Iterator<String> nameIt = mgr.getWidgetConfigNameIterator(); |
|
|
|
while (nameIt.hasNext()) { |
|
|
|
while (nameIt.hasNext()) { |
|
|
|
String name = nameIt.next(); |
|
|
|
String name = nameIt.next(); |
|
|
|
WidgetConfig widgetConfig = mgr.getWidgetConfig(name); |
|
|
|
WidgetConfig widgetConfig = mgr.getWidgetConfig(name); |
|
|
|
if (widgetConfig instanceof UserDefinedWidgetConfig) { |
|
|
|
if (widgetConfig instanceof UserDefinedWidgetConfig) { |
|
|
|
Widget widget = ((UserDefinedWidgetConfig) widgetConfig).getWidget(); |
|
|
|
Widget widget = ((UserDefinedWidgetConfig) widgetConfig).getWidget(); |
|
|
|
String widgetClassName = widget.getClass().getName(); |
|
|
|
String widgetClassName = widget.getClass().getName(); |
|
|
|
if (isButtonWidget(widgetClassName)) { |
|
|
|
if (isButtonWidget(widgetClassName)) { |
|
|
|
// ...
|
|
|
|
// ...
|
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
if (!XCreatorUtils.createXCreator(widget).canEnterIntoParaPane()){ |
|
|
|
if (!XCreatorUtils.createXCreator(widget).canEnterIntoParaPane()) { |
|
|
|
//预定义控件工具栏这儿不显示工具栏中没有的预定义控件
|
|
|
|
//预定义控件工具栏这儿不显示工具栏中没有的预定义控件
|
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
predifinedwidgeList.add(new UserDefinedWidgetOption(name)); |
|
|
|
predifinedwidgeList.add(new UserDefinedWidgetOption(name)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private boolean isButtonWidget(String widgetClassName) { |
|
|
|
private boolean isButtonWidget(String widgetClassName) { |
|
|
|
return widgetClassName.endsWith("DeleteRowButton") || widgetClassName.endsWith("AppendRowButton") || widgetClassName.endsWith("TreeNodeToogleButton"); |
|
|
|
return widgetClassName.endsWith("DeleteRowButton") || widgetClassName.endsWith("AppendRowButton") || widgetClassName.endsWith("TreeNodeToogleButton"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void setTarget(FormDesigner designer) { |
|
|
|
private void setTarget(FormDesigner designer) { |
|
|
|
if (designer == null) { |
|
|
|
if (designer == null) { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
initFormParaComponent(); |
|
|
|
initFormParaComponent(); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private JPanel createNormalCombinationPane(JComponent jComponent,String typeName){ |
|
|
|
private JPanel createNormalCombinationPane(JComponent jComponent, String typeName) { |
|
|
|
JPanel reportPane = new JPanel(new BorderLayout(17,5)); |
|
|
|
JPanel reportPane = new JPanel(new BorderLayout(17, 5)); |
|
|
|
reportPane.add(jComponent,BorderLayout.CENTER); |
|
|
|
reportPane.add(jComponent, BorderLayout.CENTER); |
|
|
|
JPanel labelPane = new JPanel(new BorderLayout()); |
|
|
|
JPanel labelPane = new JPanel(new BorderLayout()); |
|
|
|
UILabel label = new UILabel(typeName,UILabel.CENTER); |
|
|
|
UILabel label = new UILabel(typeName, UILabel.CENTER); |
|
|
|
if(ComparatorUtils.equals(Inter.getLocText("FR-Designer_Parameter"),typeName )){ |
|
|
|
if (ComparatorUtils.equals(Inter.getLocText("FR-Designer_Parameter"), typeName)) { |
|
|
|
paraLabel = label; |
|
|
|
paraLabel = label; |
|
|
|
} |
|
|
|
} |
|
|
|
labelPane.add(label,BorderLayout.CENTER); |
|
|
|
labelPane.add(label, BorderLayout.CENTER); |
|
|
|
reportPane.add(labelPane,BorderLayout.SOUTH); |
|
|
|
reportPane.add(labelPane, BorderLayout.SOUTH); |
|
|
|
reportPane.setPreferredSize(new Dimension((int)reportPane.getPreferredSize().getWidth(),(int)reportPane.getPreferredSize().getHeight())); |
|
|
|
reportPane.setPreferredSize(new Dimension((int) reportPane.getPreferredSize().getWidth(), (int) reportPane.getPreferredSize().getHeight())); |
|
|
|
return reportPane; |
|
|
|
return reportPane; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private JPanel createChartCombinationPane(JComponent jComponent,String typeName){ |
|
|
|
private JPanel createChartCombinationPane(JComponent jComponent, String typeName) { |
|
|
|
JPanel chartPane = new JPanel(new BorderLayout(17,5)); |
|
|
|
JPanel chartPane = new JPanel(new BorderLayout(17, 5)); |
|
|
|
chartPane.add(jComponent, BorderLayout.CENTER); |
|
|
|
chartPane.add(jComponent, BorderLayout.CENTER); |
|
|
|
JPanel labelPane = new JPanel(new BorderLayout()); |
|
|
|
JPanel labelPane = new JPanel(new BorderLayout()); |
|
|
|
labelPane.add(new UILabel(typeName,UILabel.CENTER),BorderLayout.CENTER); |
|
|
|
labelPane.add(new UILabel(typeName, UILabel.CENTER), BorderLayout.CENTER); |
|
|
|
UIButton chartPopUpButton = createPopUpButton(); |
|
|
|
UIButton chartPopUpButton = createPopUpButton(); |
|
|
|
chartPopUpButton.addMouseListener(new MouseAdapter() { |
|
|
|
chartPopUpButton.addMouseListener(new MouseAdapter() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void mouseClicked(MouseEvent e) { |
|
|
|
public void mouseClicked(MouseEvent e) { |
|
|
|
if(chartTypeWindow == null) { |
|
|
|
JPanel componentsPara = new JPanel(new FlowLayout(FlowLayout.LEFT)); |
|
|
|
JPanel componentsPara = new JPanel(new FlowLayout(FlowLayout.LEFT)); |
|
|
|
WidgetOption[] chartOptions = loadChartOptions(); |
|
|
|
WidgetOption[] chartOptions = loadChartOptions(); |
|
|
|
for (WidgetOption chartOption : chartOptions) { |
|
|
|
for (WidgetOption chartOption : chartOptions) { |
|
|
|
componentsPara.add(new ToolBarButton(chartOption)); |
|
|
|
componentsPara.add( new ToolBarButton(chartOption)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
int x = commonChartNum * (widgetButtonWidth + smallGAP); |
|
|
|
|
|
|
|
int y = (int)Math.ceil(chartOptions.length/((double)commonChartNum)) * (widgetButtonHeight + smallGAP); |
|
|
|
|
|
|
|
componentsPara.setPreferredSize(new Dimension(x,y)); |
|
|
|
|
|
|
|
chartTypeWindow = new PopUpWindow(componentsPara, Inter.getLocText("FR-Designer-Form-ToolBar_Chart")); |
|
|
|
|
|
|
|
chartTypeWindow.setLocation((int)jSeparatorLayout.getLocationOnScreen().getX() + 1, (int)jSeparatorLayout.getLocationOnScreen().getY()); |
|
|
|
|
|
|
|
chartTypeWindow.setSize(chartTypeWindow.getPreferredSize()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
int x = COMMON_CHAR_NUM * (widgetButtonWidth + smallGAP); |
|
|
|
|
|
|
|
int y = (int) Math.ceil(chartOptions.length / ((double) COMMON_CHAR_NUM)) * (widgetButtonHeight + smallGAP); |
|
|
|
|
|
|
|
componentsPara.setPreferredSize(new Dimension(x, y)); |
|
|
|
|
|
|
|
chartTypeWindow = new PopUpWindow(componentsPara, Inter.getLocText("FR-Designer-Form-ToolBar_Chart")); |
|
|
|
|
|
|
|
chartTypeWindow.setLocation((int) jSeparatorLayout.getLocationOnScreen().getX() + 1, (int) jSeparatorLayout.getLocationOnScreen().getY()); |
|
|
|
|
|
|
|
chartTypeWindow.setSize(chartTypeWindow.getPreferredSize()); |
|
|
|
chartTypeWindow.setVisible(true); |
|
|
|
chartTypeWindow.setVisible(true); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
labelPane.add(chartPopUpButton,BorderLayout.EAST); |
|
|
|
labelPane.add(chartPopUpButton, BorderLayout.EAST); |
|
|
|
chartPane.add(labelPane,BorderLayout.SOUTH); |
|
|
|
chartPane.add(labelPane, BorderLayout.SOUTH); |
|
|
|
return chartPane; |
|
|
|
return chartPane; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private JPanel createWidgetCombinationPane(JComponent jComponent,String typeName){ |
|
|
|
private JPanel createWidgetCombinationPane(JComponent jComponent, String typeName) { |
|
|
|
JPanel widgetPane = new JPanel(new BorderLayout(17,5)); |
|
|
|
JPanel widgetPane = new JPanel(new BorderLayout(17, 5)); |
|
|
|
widgetPane.add(jComponent,BorderLayout.CENTER); |
|
|
|
widgetPane.add(jComponent, BorderLayout.CENTER); |
|
|
|
JPanel labelPane = new JPanel(new BorderLayout()); |
|
|
|
JPanel labelPane = new JPanel(new BorderLayout()); |
|
|
|
labelPane.add(new UILabel(typeName,UILabel.CENTER),BorderLayout.CENTER); |
|
|
|
labelPane.add(new UILabel(typeName, UILabel.CENTER), BorderLayout.CENTER); |
|
|
|
UIButton chartPopUpButton = createPopUpButton(); |
|
|
|
UIButton chartPopUpButton = createPopUpButton(); |
|
|
|
chartPopUpButton.addMouseListener(new MouseAdapter() { |
|
|
|
chartPopUpButton.addMouseListener(new MouseAdapter() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void mouseClicked(MouseEvent e) { |
|
|
|
public void mouseClicked(MouseEvent e) { |
|
|
|
JPanel widgetPane = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0)); |
|
|
|
JPanel widgetPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); |
|
|
|
loadPredefinedWidget(); |
|
|
|
loadPredefinedWidget(); |
|
|
|
int rowNum = calculateWidgetWindowRowNum(); |
|
|
|
int rowNum = calculateWidgetWindowRowNum(); |
|
|
|
JPanel westPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); |
|
|
|
JPanel westPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); |
|
|
@ -239,27 +236,27 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
westPanel.add(new ToolBarButton(o)); |
|
|
|
westPanel.add(new ToolBarButton(o)); |
|
|
|
} |
|
|
|
} |
|
|
|
int x = commonWidgetNum * (widgetButtonWidth + smallGAP); |
|
|
|
int x = commonWidgetNum * (widgetButtonWidth + smallGAP); |
|
|
|
westPanel.setPreferredSize(new Dimension(x,(int)(rowNum * westPanel.getPreferredSize().getHeight()))); |
|
|
|
westPanel.setPreferredSize(new Dimension(x, (int) (rowNum * westPanel.getPreferredSize().getHeight()))); |
|
|
|
JPanel eastPane = new JPanel(new FlowLayout(FlowLayout.LEFT)); |
|
|
|
JPanel eastPane = new JPanel(new FlowLayout(FlowLayout.LEFT)); |
|
|
|
for (WidgetOption no : predifinedwidgeList) { |
|
|
|
for (WidgetOption no : predifinedwidgeList) { |
|
|
|
eastPane.add(new ToolBarButton(no)); |
|
|
|
eastPane.add(new ToolBarButton(no)); |
|
|
|
} |
|
|
|
} |
|
|
|
int maxWidth = preWidgetShowMaxNum * (widgetButtonWidth + smallGAP); |
|
|
|
int maxWidth = preWidgetShowMaxNum * (widgetButtonWidth + smallGAP); |
|
|
|
int width = predifinedwidgeList.size() >= preWidgetShowMaxNum ? maxWidth:(int)eastPane.getPreferredSize().getWidth(); |
|
|
|
int width = predifinedwidgeList.size() >= preWidgetShowMaxNum ? maxWidth : (int) eastPane.getPreferredSize().getWidth(); |
|
|
|
eastPane.setPreferredSize(new Dimension(width,(int)(rowNum*eastPane.getPreferredSize().getHeight()))); |
|
|
|
eastPane.setPreferredSize(new Dimension(width, (int) (rowNum * eastPane.getPreferredSize().getHeight()))); |
|
|
|
|
|
|
|
|
|
|
|
UIScrollPane eastScrollPane = new UIScrollPane(eastPane); |
|
|
|
UIScrollPane eastScrollPane = new UIScrollPane(eastPane); |
|
|
|
eastScrollPane.setBorder(null); |
|
|
|
eastScrollPane.setBorder(null); |
|
|
|
int maxHeight = preWidgetShowMaxRow * (widgetButtonHeight + smallGAP); |
|
|
|
int maxHeight = preWidgetShowMaxRow * (widgetButtonHeight + smallGAP); |
|
|
|
int height = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? maxHeight : (int)eastPane.getPreferredSize().getHeight(); |
|
|
|
int height = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? maxHeight : (int) eastPane.getPreferredSize().getHeight(); |
|
|
|
width = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? (int)eastPane.getPreferredSize().getWidth() + smallGAP + jsparatorWidth : (int)eastPane.getPreferredSize().getWidth(); |
|
|
|
width = predifinedwidgeList.size() >= preWidgetShowMaxNum * preWidgetShowMaxRow ? (int) eastPane.getPreferredSize().getWidth() + smallGAP + jsparatorWidth : (int) eastPane.getPreferredSize().getWidth(); |
|
|
|
eastScrollPane.setPreferredSize(new Dimension(width,height)); |
|
|
|
eastScrollPane.setPreferredSize(new Dimension(width, height)); |
|
|
|
|
|
|
|
|
|
|
|
widgetPane.add(westPanel); |
|
|
|
widgetPane.add(westPanel); |
|
|
|
widgetPane.add(createJSeparator(height)); |
|
|
|
widgetPane.add(createJSeparator(height)); |
|
|
|
widgetPane.add(eastScrollPane); |
|
|
|
widgetPane.add(eastScrollPane); |
|
|
|
|
|
|
|
|
|
|
|
widgetTypeWindow = new PopUpWindow( widgetPane, Inter.getLocText("FR-Designer-Form-ToolBar_Widget")); |
|
|
|
widgetTypeWindow = new PopUpWindow(widgetPane, Inter.getLocText("FR-Designer-Form-ToolBar_Widget")); |
|
|
|
widgetTypeWindow.setSize(widgetTypeWindow.getPreferredSize()); |
|
|
|
widgetTypeWindow.setSize(widgetTypeWindow.getPreferredSize()); |
|
|
|
if (jSeparatorChart != null) { |
|
|
|
if (jSeparatorChart != null) { |
|
|
|
widgetTypeWindow.setLocation((int) jSeparatorChart.getLocationOnScreen().getX() + 1, (int) jSeparatorChart.getLocationOnScreen().getY()); |
|
|
|
widgetTypeWindow.setLocation((int) jSeparatorChart.getLocationOnScreen().getX() + 1, (int) jSeparatorChart.getLocationOnScreen().getY()); |
|
|
@ -268,59 +265,60 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
labelPane.add(chartPopUpButton,BorderLayout.EAST); |
|
|
|
labelPane.add(chartPopUpButton, BorderLayout.EAST); |
|
|
|
widgetPane.add(labelPane,BorderLayout.SOUTH); |
|
|
|
widgetPane.add(labelPane, BorderLayout.SOUTH); |
|
|
|
return widgetPane; |
|
|
|
return widgetPane; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private int calculateWidgetWindowRowNum(){ |
|
|
|
private int calculateWidgetWindowRowNum() { |
|
|
|
//向上取整
|
|
|
|
//向上取整
|
|
|
|
int rowNum = (int)Math.ceil((double)predifinedwidgeList.size()/(double)preWidgetShowMaxNum); |
|
|
|
int rowNum = (int) Math.ceil((double) predifinedwidgeList.size() / (double) preWidgetShowMaxNum); |
|
|
|
rowNum = Math.max(rowNum,2); |
|
|
|
rowNum = Math.max(rowNum, 2); |
|
|
|
rowNum = Math.min(rowNum,preWidgetShowMaxRow); |
|
|
|
rowNum = Math.min(rowNum, preWidgetShowMaxRow); |
|
|
|
return rowNum; |
|
|
|
return rowNum; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private JSeparator createJSeparator(){ |
|
|
|
private JSeparator createJSeparator() { |
|
|
|
JSeparator jSeparator = new JSeparator(SwingConstants.VERTICAL ); |
|
|
|
JSeparator jSeparator = new JSeparator(SwingConstants.VERTICAL); |
|
|
|
jSeparator.setPreferredSize(new Dimension(jsparatorWidth,jsparatorHeight)); |
|
|
|
jSeparator.setPreferredSize(new Dimension(jsparatorWidth, jsparatorHeight)); |
|
|
|
return jSeparator; |
|
|
|
return jSeparator; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private JSeparator createJSeparator(double height){ |
|
|
|
private JSeparator createJSeparator(double height) { |
|
|
|
JSeparator jSeparator = new JSeparator(SwingConstants.VERTICAL ); |
|
|
|
JSeparator jSeparator = new JSeparator(SwingConstants.VERTICAL); |
|
|
|
jSeparator.setPreferredSize(new Dimension(jsparatorWidth,(int)height)); |
|
|
|
jSeparator.setPreferredSize(new Dimension(jsparatorWidth, (int) height)); |
|
|
|
return jSeparator; |
|
|
|
return jSeparator; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private UIButton createPopUpButton(){ |
|
|
|
private UIButton createPopUpButton() { |
|
|
|
UIButton popUpButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowdown.png")); |
|
|
|
UIButton popUpButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowdown.png")); |
|
|
|
popUpButton.set4ToolbarButton(); |
|
|
|
popUpButton.set4ToolbarButton(); |
|
|
|
return popUpButton; |
|
|
|
return popUpButton; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private UIButton createPopDownButton(){ |
|
|
|
private UIButton createPopDownButton() { |
|
|
|
UIButton popUpButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowup.png")); |
|
|
|
UIButton popUpButton = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/arrowup.png")); |
|
|
|
popUpButton.set4ToolbarButton(); |
|
|
|
popUpButton.set4ToolbarButton(); |
|
|
|
return popUpButton; |
|
|
|
return popUpButton; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private class paraButton extends ToolBarButton{ |
|
|
|
private class paraButton extends ToolBarButton { |
|
|
|
public paraButton(WidgetOption no){ |
|
|
|
public paraButton(WidgetOption no) { |
|
|
|
super(no); |
|
|
|
super(no); |
|
|
|
this.setDisabledIcon(BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_parameter2.png")); |
|
|
|
this.setDisabledIcon(BaseUtils.readIcon("/com/fr/web/images/form/resources/layout_parameter2.png")); |
|
|
|
if(designer != null){ |
|
|
|
if (designer != null) { |
|
|
|
this.setEnabled(designer.getParaComponent() == null); |
|
|
|
this.setEnabled(designer.getParaComponent() == null); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void mouseDragged(MouseEvent e) { |
|
|
|
public void mouseDragged(MouseEvent e) { |
|
|
|
if (designer.getParaComponent() != null){ |
|
|
|
if (designer.getParaComponent() != null) { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
designer.addParaComponent(); |
|
|
|
designer.addParaComponent(); |
|
|
|
JPanel pane =FormWidgetDetailPane.getInstance(designer); |
|
|
|
JPanel pane = FormWidgetDetailPane.getInstance(designer); |
|
|
|
EastRegionContainerPane.getInstance().replaceDownPane(pane); |
|
|
|
EastRegionContainerPane.getInstance().replaceDownPane(pane); |
|
|
|
this.setEnabled(false); |
|
|
|
this.setEnabled(false); |
|
|
|
|
|
|
|
|
|
|
@ -334,7 +332,7 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
|
|
|
|
|
|
|
|
public void setEnabled(boolean b) { |
|
|
|
public void setEnabled(boolean b) { |
|
|
|
super.setEnabled(b); |
|
|
|
super.setEnabled(b); |
|
|
|
paraLabel.setForeground(b ? Color.BLACK : new Color(198,198,198)); |
|
|
|
paraLabel.setForeground(b ? Color.BLACK : new Color(198, 198, 198)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
@ -347,8 +345,9 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* 响应界面改变事件 |
|
|
|
* 响应界面改变事件 |
|
|
|
* @param evt 事件 |
|
|
|
* |
|
|
|
|
|
|
|
* @param evt 事件 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public void fireCreatorModified(DesignerEvent evt) { |
|
|
|
public void fireCreatorModified(DesignerEvent evt) { |
|
|
|
button.setEnabled(designer.getParaComponent() == null); |
|
|
|
button.setEnabled(designer.getParaComponent() == null); |
|
|
@ -356,14 +355,13 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private class PopUpWindow extends JWindow { |
|
|
|
private class PopUpWindow extends JWindow { |
|
|
|
private JPanel northPane; |
|
|
|
private JPanel northPane; |
|
|
|
private String typeName; |
|
|
|
private String typeName; |
|
|
|
private int LineWidth = 5; |
|
|
|
private int LineWidth = 5; |
|
|
|
private int BarWidth = 10; |
|
|
|
private int BarWidth = 10; |
|
|
|
|
|
|
|
|
|
|
|
public PopUpWindow(JPanel northPane,String typeName){ |
|
|
|
public PopUpWindow(JPanel northPane, String typeName) { |
|
|
|
super(); |
|
|
|
super(); |
|
|
|
this.northPane = northPane; |
|
|
|
this.northPane = northPane; |
|
|
|
this.typeName = typeName; |
|
|
|
this.typeName = typeName; |
|
|
@ -376,17 +374,14 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
public void eventDispatched(AWTEvent event) { |
|
|
|
public void eventDispatched(AWTEvent event) { |
|
|
|
if (event instanceof MouseEvent) { |
|
|
|
if (event instanceof MouseEvent) { |
|
|
|
MouseEvent mv = (MouseEvent) event; |
|
|
|
MouseEvent mv = (MouseEvent) event; |
|
|
|
Point point = mv.getLocationOnScreen(); |
|
|
|
if (mv.getClickCount() > 0) { |
|
|
|
double endX = PopUpWindow.this.getX() + northPane.getWidth() + LineWidth; |
|
|
|
Point point = new Point((int) (mv.getLocationOnScreen().getX()), (int) mv.getLocationOnScreen().getY()); |
|
|
|
double startX = endX - BarWidth; |
|
|
|
// 直接contains在mac下,点击内部也会消失
|
|
|
|
double startY = PopUpWindow.this.getY() + northPane.getY(); |
|
|
|
Dimension d = PopUpWindow.this.getSize(); |
|
|
|
double endY = startY + northPane.getHeight(); |
|
|
|
Point p = PopUpWindow.this.getLocation(); |
|
|
|
boolean dragBar = startX < point.getX() && endX > point.getX() && endY > point.getY(); |
|
|
|
Rectangle rect = new Rectangle(p, d); |
|
|
|
if (!dragBar && mv.getClickCount() > 0 && mv.getID() != MouseEvent.MOUSE_RELEASED) { |
|
|
|
if (!rect.contains(point)) { |
|
|
|
if(!ComparatorUtils.equals(mv.getSource(), PopUpWindow.this)) { |
|
|
|
PopUpWindow.this.setVisible(false); |
|
|
|
if (!OperatingSystem.isMacOS()) { |
|
|
|
|
|
|
|
PopUpWindow.this.setVisible(false); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -398,9 +393,9 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
JPanel rootPane = new EditorChoosePane(); |
|
|
|
JPanel rootPane = new EditorChoosePane(); |
|
|
|
JPanel contentPane = new JPanel(); |
|
|
|
JPanel contentPane = new JPanel(); |
|
|
|
contentPane.setLayout(new BorderLayout(17, 0)); |
|
|
|
contentPane.setLayout(new BorderLayout(17, 0)); |
|
|
|
contentPane.add(northPane,BorderLayout.CENTER); |
|
|
|
contentPane.add(northPane, BorderLayout.CENTER); |
|
|
|
JPanel labelPane = new JPanel(new BorderLayout()); |
|
|
|
JPanel labelPane = new JPanel(new BorderLayout()); |
|
|
|
labelPane.add(new UILabel(typeName,UILabel.CENTER),BorderLayout.CENTER); |
|
|
|
labelPane.add(new UILabel(typeName, UILabel.CENTER), BorderLayout.CENTER); |
|
|
|
JButton popUpButton = createPopDownButton(); |
|
|
|
JButton popUpButton = createPopDownButton(); |
|
|
|
popUpButton.addMouseListener(new MouseAdapter() { |
|
|
|
popUpButton.addMouseListener(new MouseAdapter() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
@ -409,8 +404,8 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
labelPane.add(popUpButton, BorderLayout.EAST); |
|
|
|
labelPane.add(popUpButton, BorderLayout.EAST); |
|
|
|
contentPane.add(labelPane,BorderLayout.SOUTH); |
|
|
|
contentPane.add(labelPane, BorderLayout.SOUTH); |
|
|
|
rootPane.add(contentPane,BorderLayout.CENTER); |
|
|
|
rootPane.add(contentPane, BorderLayout.CENTER); |
|
|
|
return rootPane; |
|
|
|
return rootPane; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
@ -421,31 +416,31 @@ public class FormParaWidgetPane extends JPanel{ |
|
|
|
private class EditorChoosePane extends JPanel { |
|
|
|
private class EditorChoosePane extends JPanel { |
|
|
|
public EditorChoosePane() { |
|
|
|
public EditorChoosePane() { |
|
|
|
super(); |
|
|
|
super(); |
|
|
|
((FlowLayout)this.getLayout()).setVgap(1); |
|
|
|
((FlowLayout) this.getLayout()).setVgap(1); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void paintComponent(Graphics g) { |
|
|
|
public void paintComponent(Graphics g) { |
|
|
|
Rectangle r = this.getBounds(); |
|
|
|
Rectangle r = this.getBounds(); |
|
|
|
g.setColor(UIConstants.NORMAL_BACKGROUND); |
|
|
|
g.setColor(UIConstants.NORMAL_BACKGROUND); |
|
|
|
g.fillRoundRect(r.x, r.y, r.width, r.height,0,0); |
|
|
|
g.fillRoundRect(r.x, r.y, r.width, r.height, 0, 0); |
|
|
|
g.setColor(UIConstants.LINE_COLOR); |
|
|
|
g.setColor(UIConstants.LINE_COLOR); |
|
|
|
g.drawLine(r.x, r.y, r.x, r.y+r.height); |
|
|
|
g.drawLine(r.x, r.y, r.x, r.y + r.height); |
|
|
|
g.drawLine(r.x, r.y+r.height-1, r.x+r.width-1, r.y+r.height-1); |
|
|
|
g.drawLine(r.x, r.y + r.height - 1, r.x + r.width - 1, r.y + r.height - 1); |
|
|
|
g.drawLine(r.x+r.width-1, r.y, r.x+r.width-1, r.y+r.height-1); |
|
|
|
g.drawLine(r.x + r.width - 1, r.y, r.x + r.width - 1, r.y + r.height - 1); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private WidgetOption[] loadWidgetOptions() { |
|
|
|
private WidgetOption[] loadWidgetOptions() { |
|
|
|
if (widgetOptions == null) { |
|
|
|
if (widgetOptions == null) { |
|
|
|
widgetOptions = (WidgetOption[])ArrayUtils.addAll(WidgetOption.getFormWidgetIntance(), ExtraDesignClassManager.getInstance().getFormWidgetOptions()); |
|
|
|
widgetOptions = (WidgetOption[]) ArrayUtils.addAll(WidgetOption.getFormWidgetIntance(), ExtraDesignClassManager.getInstance().getFormWidgetOptions()); |
|
|
|
} |
|
|
|
} |
|
|
|
return widgetOptions; |
|
|
|
return widgetOptions; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private WidgetOption[] loadLayoutOptions() { |
|
|
|
private WidgetOption[] loadLayoutOptions() { |
|
|
|
if (layoutOptions == null) { |
|
|
|
if (layoutOptions == null) { |
|
|
|
layoutOptions = (WidgetOption[])ArrayUtils.addAll(FormWidgetOption.getFormLayoutInstance(), ExtraDesignClassManager.getInstance().getFormWidgetContainerOptions()); |
|
|
|
layoutOptions = (WidgetOption[]) ArrayUtils.addAll(FormWidgetOption.getFormLayoutInstance(), ExtraDesignClassManager.getInstance().getFormWidgetContainerOptions()); |
|
|
|
} |
|
|
|
} |
|
|
|
return layoutOptions; |
|
|
|
return layoutOptions; |
|
|
|
} |
|
|
|
} |
|
|
|