diff --git a/designer_base/src/com/fr/design/data/BasicTableDataTreePane.java b/designer_base/src/com/fr/design/data/BasicTableDataTreePane.java index a76d4a1059..92f02d5f4f 100644 --- a/designer_base/src/com/fr/design/data/BasicTableDataTreePane.java +++ b/designer_base/src/com/fr/design/data/BasicTableDataTreePane.java @@ -428,11 +428,11 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp } /** - * 合并数据集 + * 合并数据集并返回自动更改数据集名字的新老名字键值对 * @param srcName 数据集来源(比如报表块,就是报表块的名称) * @param tableDataSource 数据集 */ - public void addTableData(String srcName, TableDataSource tableDataSource) { - + public Map addTableData(String srcName, TableDataSource tableDataSource) { + return new HashMap<>(0); } } diff --git a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java index 219093c6d9..5a893803c2 100644 --- a/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer_base/src/com/fr/design/data/datapane/TableDataTreePane.java @@ -38,6 +38,7 @@ import java.awt.dnd.DnDConstants; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -275,13 +276,15 @@ public class TableDataTreePane extends BasicTableDataTreePane { * @param srcName 数据集来源(比如报表块,就是报表块的名称) * @param tableDataSource 数据集 */ - public void addTableData(String srcName, TableDataSource tableDataSource) { + public Map addTableData(String srcName, TableDataSource tableDataSource) { + Map tdNameMap = new HashMap<>(); allDSNames = DesignTableDataManager.getAllDSNames(tc.getBook()); DesignTableDataManager.setThreadLocal(DesignTableDataManager.NO_PARAMETER); TableDataSource tds = tc.getBook(); Iterator tdIterator = tableDataSource.getTableDataNameIterator(); while (tdIterator.hasNext()) { String tdName = (String) tdIterator.next(); + String oldName = tdName; TableData td = tableDataSource.getTableData(tdName); if (tds.getTableData(tdName) != null || isDsNameRepeaded(tdName)) {//如果有同名的就拼上来源名称 tdName = srcName + tdName; @@ -292,8 +295,12 @@ public class TableDataTreePane extends BasicTableDataTreePane { tdName += i; } tds.putTableData(tdName, td); + if (!ComparatorUtils.equals(oldName, tdName)) { + tdNameMap.put(oldName, tdName); + } } tc.parameterChanged(); dataTree.refresh(); + return Collections.unmodifiableMap(tdNameMap); } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java index 5b1ed2febf..b0fba71c96 100644 --- a/designer_base/src/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java +++ b/designer_base/src/com/fr/design/data/tabledata/tabledatapane/DBTableDataPane.java @@ -28,6 +28,7 @@ import com.fr.design.gui.syntax.ui.rtextarea.RTextScrollPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.menu.SeparatorDef; import com.fr.design.menu.ToolBarDef; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.script.Calculator; @@ -47,8 +48,8 @@ import java.util.ArrayList; import java.util.List; public class DBTableDataPane extends AbstractTableDataPane { - private static final String PREVIEW_BUTTON = Inter.getLocText("Preview"); - private static final String REFRESH_BUTTON = Inter.getLocText("Refresh"); + private static final String PREVIEW_BUTTON = Inter.getLocText("FR-Designer_Preview"); + private static final String REFRESH_BUTTON = Inter.getLocText("FR-Designer_Refresh"); private ConnectionTableProcedurePane connectionTableProcedurePane; private UITableEditorPane editorPane; @@ -77,7 +78,7 @@ public class DBTableDataPane extends AbstractTableDataPane { JPanel paraMeanPane = new JPanel(new BorderLayout()); paraMeanPane.setPreferredSize(new Dimension(680, 90)); - UILabel paraMean = new UILabel(Inter.getLocText("Datasource-Param_DES")); + UILabel paraMean = new UILabel(Inter.getLocText("FR-Designer-Datasource-Param_DES")); paraMeanPane.add(paraMean, BorderLayout.CENTER); ParameterTableModel model = new ParameterTableModel() { @@ -125,9 +126,12 @@ public class DBTableDataPane extends AbstractTableDataPane { } } }); - - this.add(connectionTableProcedurePane, BorderLayout.WEST); - this.add(sqlSplitPane, BorderLayout.CENTER); + box.setMinimumSize(new Dimension(310, 400)); + // 使用SplitPane + JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, connectionTableProcedurePane, sqlSplitPane); + mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor())); + mainSplitPane.setOneTouchExpandable(true); + this.add(mainSplitPane, BorderLayout.CENTER); } private boolean isPreviewOrRefreshButton (FocusEvent e) { @@ -140,7 +144,7 @@ public class DBTableDataPane extends AbstractTableDataPane { @Override protected String title4PopupWindow() { - return Inter.getLocText("DS-Database_Query"); + return Inter.getLocText("FR-Designer-DS-Database_Query"); } private void refresh() { @@ -160,7 +164,7 @@ public class DBTableDataPane extends AbstractTableDataPane { toolBarDef.addShortCut(new PreviewAction()); toolBarDef.addShortCut(SeparatorDef.DEFAULT); toolBarDef.addShortCut(new EditPageQueryAction()); - isShareCheckBox = new UICheckBox(Inter.getLocText("Is_Share_DBTableData")); + isShareCheckBox = new UICheckBox(Inter.getLocText("FR-Designer_Is_Share_DBTableData")); maxPanel = new MaxMemRowCountPanel(); maxPanel.setBorder(null); UIToolbar editToolBar = ToolBarDef.createJToolBar(); @@ -233,7 +237,7 @@ public class DBTableDataPane extends AbstractTableDataPane { String dbName = this.connectionTableProcedurePane.getSelectedDatabaseConnnectonName(); if (StringUtils.isBlank(dbName) || StringUtils.isBlank(this.sqlTextPane.getText())) { try { - throw new Exception(Inter.getLocText("Connect_SQL_Cannot_Null") + "."); + throw new Exception(Inter.getLocText("FR-Designer_Connect_SQL_Cannot_Null") + "."); } catch (Exception e) { // JOptionPane.showMessageDialog(DBTableDataPane.this, // Inter.getLocText("Connect_SQL_Cannot_Null") + "."); @@ -288,7 +292,7 @@ public class DBTableDataPane extends AbstractTableDataPane { private class EditPageQueryAction extends UpdateAction { public EditPageQueryAction() { - this.setName(Inter.getLocText("LayerPageReport_PageQuery")); + this.setName(Inter.getLocText("FR-Designer-LayerPageReport_PageQuery")); this.setMnemonic('L'); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_file/text.png")); } @@ -338,7 +342,7 @@ public class DBTableDataPane extends AbstractTableDataPane { @Override protected String title4PopupWindow() { - return Inter.getLocText("LayerPageReport_Define_PageQuerySQL"); + return Inter.getLocText("FR-Designer-LayerPageReport_Define_PageQuerySQL"); } } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/extra/PluginHelper.java b/designer_base/src/com/fr/design/extra/PluginHelper.java index 4a4870ba23..ecaa34ea00 100644 --- a/designer_base/src/com/fr/design/extra/PluginHelper.java +++ b/designer_base/src/com/fr/design/extra/PluginHelper.java @@ -15,6 +15,7 @@ import com.fr.plugin.dependence.PluginDependenceUnit; import com.fr.stable.ArrayUtils; import com.fr.stable.EncodeConstants; import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; import com.fr.stable.xml.XMLTools; @@ -47,6 +48,9 @@ public class PluginHelper { * @param p 下载百分比处理 */ public static void downloadPluginFile(String id, String username, String password, Process p) throws Exception { + if (!PluginHelper.invalidUser(id, username, password)) { + return; + } HttpClient httpClient = new HttpClient(getDownloadPath(id, username, password)); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { int totalSize = httpClient.getContentLength(); @@ -72,6 +76,16 @@ public class PluginHelper { } } + private static boolean invalidUser(String id, String username, String password) { + if (StringUtils.isEmpty(id)) { + return false; + } else if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)){ + return false; + } else { + return true; + } + } + private static String getDownloadPath(String id, String username, String password) throws Exception { HashMap map = new HashMap(); map.put("id", id); diff --git a/designer_base/src/com/fr/design/formula/TinyFormulaPane.java b/designer_base/src/com/fr/design/formula/TinyFormulaPane.java index 16c897bc12..649d5face2 100644 --- a/designer_base/src/com/fr/design/formula/TinyFormulaPane.java +++ b/designer_base/src/com/fr/design/formula/TinyFormulaPane.java @@ -42,7 +42,7 @@ public class TinyFormulaPane extends BasicBeanPane implements UIObserver // 添加一公式编辑器按钮 formulaTextFieldButton = new UIButton(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); - formulaTextFieldButton.setToolTipText(Inter.getLocText("Formula") + "..."); + formulaTextFieldButton.setToolTipText(Inter.getLocText("FR-Designer_Formula") + "..."); formulaTextFieldButton.setPreferredSize(new Dimension(24, 20)); formulaTextFieldButton.setOpaque(false); formulaTextFieldButton.setCursor(new Cursor(Cursor.HAND_CURSOR)); @@ -56,11 +56,7 @@ public class TinyFormulaPane extends BasicBeanPane implements UIObserver @Override public void doOk() { Formula fm = formulaPane.update(); - if (fm.getContent().length() <= 1) { - formulaTextField.setText("$$$"); - } else { - formulaTextField.setText(fm.getContent()); - } + populateTextField(fm); okEvent(); } }).setVisible(true); @@ -69,6 +65,14 @@ public class TinyFormulaPane extends BasicBeanPane implements UIObserver initLayout(); } + protected void populateTextField(Formula fm) { + if (fm.getContent().length() <= 1) { + formulaTextField.setText("$$$"); + } else { + formulaTextField.setText(fm.getContent()); + } + } + protected void initLayout() { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; diff --git a/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java b/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java index c5837727ed..b2e30f41f5 100644 --- a/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java +++ b/designer_base/src/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java @@ -46,6 +46,7 @@ import com.fr.stable.StringUtils; import com.fr.design.utils.gui.GUICoreUtils; public class UICorrelationComboBoxPane extends JPanel implements UIObserver { + private static final Dimension DIALOG_SIZE = new Dimension(500, 500); private JPopupMenu popMenu; private UIMenuTable tablePane; private UIButton addButton; @@ -79,6 +80,9 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { } } + protected Dimension getDialogSize() { + return DIALOG_SIZE; + } /** * 刷新下拉列表和按钮 @@ -120,7 +124,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { fireTargetChanged(); } }); - dialog.setSize(500, 500); + dialog.setSize(getDialogSize()); GUICoreUtils.centerWindow(dialog); dialog.setVisible(true); } @@ -202,7 +206,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { fireTargetChanged(); } }); - dialog.setSize(500, 500); + dialog.setSize(getDialogSize()); dialog.setVisible(true); } else { popMenu.show(UICorrelationComboBoxPane.this, addButton.getX() + 1, addButton.getY() + addButton.getHeight()); diff --git a/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java index 13ea214ec5..d16622184f 100644 --- a/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -3,7 +3,6 @@ package com.fr.design.gui.icontainer; import com.fr.base.BaseUtils; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.stable.Constants; import com.fr.design.utils.gui.GUICoreUtils; @@ -217,8 +216,8 @@ public class UIResizableContainer extends JPanel { } } else if (direction == Constants.LEFT) { if(isDownPaneVisible){ - if (toolPaneY > getHeight() - toolPaneHeight) { - toolPaneY = getHeight() - toolPaneHeight; + if (toolPaneY > getHeight() - toolPaneHeight - getParameterPaneHeight()) { + toolPaneY = getHeight() - toolPaneHeight - getParameterPaneHeight(); } parameterPane.setBounds(20, 0, 230, getParameterPaneHeight()); upPane.setBounds(toolPaneHeight, getParameterPaneHeight(), containerWidth - toolPaneHeight, toolPaneY); diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index ce7e531fa8..0036946f01 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2116,6 +2116,7 @@ public class RemoteEnv implements Env { StableUtils.mkdirs(target); File cacheDir = null; File zip = null; + OutputStream out = null; try { HashMap para = new HashMap(); para.put("op", "fr_remote_design"); @@ -2124,16 +2125,15 @@ public class RemoteEnv implements Env { para.put("currentUsername", this.getUser()); HttpClient client = createHttpMethod(para); - InputStream input = client.getResponseStream(); + InputStream input = client.getResponseStream();//拿到服务端传过来的整个共享文件夹的压缩文件的文件流 zip = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), "share.zip"); cacheDir = new File(StableUtils.pathJoin(CacheManager.getProviderInstance().getCacheDirectory().getAbsolutePath()), ShareConstants.DIR_SHARE_CACHE); StableUtils.deleteFile(cacheDir); StableUtils.mkdirs(cacheDir); StableUtils.makesureFileExist(zip); - FileOutputStream out = new FileOutputStream(zip); - IOUtils.copyBinaryTo(input, out); - out.flush(); - out.close(); + out = new FileOutputStream(zip); + IOUtils.copyBinaryTo(input, out);//放到本地缓存目录下 + IOUtils.unzip(zip, cacheDir.getAbsolutePath(), EncodeConstants.ENCODING_GBK);//先解压到临时目录 if (cacheDir.exists() && cacheDir.isDirectory()) { return cacheDir.listFiles(new FilenameFilter() { @@ -2146,6 +2146,10 @@ public class RemoteEnv implements Env { } catch (Exception e) { FRContext.getLogger().error(e.getMessage()); } finally { + if (out != null) { + out.flush(); + out.close(); + } StableUtils.deleteFile(zip); } return new File[0]; @@ -2153,25 +2157,33 @@ public class RemoteEnv implements Env { @Override public boolean installREUFile(File reuFile) { -// if (reuFile == null) { -// return false; -// } -// try { -// HashMap para = new HashMap(); -// para.put("op", "fr_remote_design"); -// para.put("cmd", "design_install_reufile"); -// para.put("current_uid", this.createUserID()); -// para.put("currentUsername", this.getUser()); -// para.put("reuFileName", reuFile.getName()); -// -// HttpClient client = createHttpMethod(para); -// client.setContent(IOUtils.inputStream2Bytes(new FileInputStream(reuFile))); -// InputStream input = execute4InputStream(client); -// return ComparatorUtils.equals(stream2String(input), "true"); -// } catch (Exception e) { -// return false; -// } - return false; + if (reuFile == null) { + return false; + } + File tempFile = new File(CacheManager.getProviderInstance().getCacheDirectory(), "temp_remote"); + IOUtils.unzip(reuFile, tempFile.getAbsolutePath()); + String shareXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_MODULE); + String helpXMLName = StableUtils.pathJoin(tempFile.getAbsolutePath(), ShareConstants.NAME_XML_HELP); + try { + HashMap para = new HashMap(); + para.put("op", "fr_remote_design"); + para.put("cmd", "design_install_reufile"); + para.put("current_uid", this.createUserID()); + para.put("currentUsername", this.getUser()); + para.put("reuFileName", reuFile.getName()); + + HttpClient client = createHttpMethod(para); + client.setContent(IOUtils.inputStream2Bytes(new FileInputStream(new File(shareXMLName)))); + InputStream input = execute4InputStream(client); + client.release(); + para.put("isComplete", "true"); + HttpClient client1 = createHttpMethod(para); + client1.setContent(IOUtils.inputStream2Bytes(new FileInputStream(new File(helpXMLName)))); + InputStream input1 = execute4InputStream(client1); + return ComparatorUtils.equals(stream2String(input), "true") && ComparatorUtils.equals(stream2String(input1), "true"); + } catch (Exception e) { + return false; + } } @Override diff --git a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java index 052fee20db..92177a8e3c 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/ChartEditPane.java @@ -168,7 +168,9 @@ public class ChartEditPane extends BasicPane implements AttributeChange,Prepare4 } protected ChartDataPane createChartDataPane(String plotID) { - return ChartTypeInterfaceManager.getInstance().getChartDataPane(plotID, listener); + ChartDataPane chartDataPane = ChartTypeInterfaceManager.getInstance().getChartDataPane(plotID, listener); + chartDataPane.setSupportCellData(dataPane4SupportCell.isSupportCellData()); + return chartDataPane; } protected void addTypePane() { diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/AbstractReportDataContentPane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/AbstractReportDataContentPane.java index 6754ca7965..4ff643522c 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/AbstractReportDataContentPane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/data/report/AbstractReportDataContentPane.java @@ -3,8 +3,8 @@ package com.fr.design.mainframe.chart.gui.data.report; import com.fr.base.Formula; import com.fr.base.Utils; import com.fr.chart.chartattr.ChartCollection; -import com.fr.design.constants.UIConstants; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.constants.UIConstants; import com.fr.design.event.UIObserverListener; import com.fr.design.formula.TinyFormulaPane; import com.fr.design.gui.frpane.UICorrelationPane; @@ -155,6 +155,11 @@ public abstract class AbstractReportDataContentPane extends BasicBeanPane tdNameMap = TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).addTableData(bindInfo.getName(), sharableEditor.getTableDataSource()); + //合并数据集之后,可能会有数据集名称变化,做一下联动 + sharableEditor.batchRenameTdName(tdNameMap); } } Widget widget = (addingXCreator.getTopLayout() != null) ? (addingXCreator.getTopLayout().toData()) : addingXCreator.toData(); @@ -98,7 +96,6 @@ public class FormCreatorDropTarget extends DropTarget { } else { Toolkit.getDefaultToolkit().beep(); } - // 取消提示 designer.setPainter(null); // 切换添加状态到普通状态 @@ -129,47 +126,9 @@ public class FormCreatorDropTarget extends DropTarget { //提示组件是否可以拖入 promptUser(x, y, container); if (container != null) { - HoverPainter painter = null; - if (container != current || designer.getPainter() == null) { - // 如果焦点容器不是当前容器 - if (current != null) { - // 取消前一个焦点容器的提示渲染器 - designer.setPainter(null); - } - //获取painter的时候要考虑布局之间嵌套的问题 - XLayoutContainer xLayoutContainer = container.getTopLayout(); - if (xLayoutContainer != null && xLayoutContainer.getParent() != null - && ((XLayoutContainer) xLayoutContainer.getParent()).acceptType(XWAbsoluteLayout.class)) { - if (!xLayoutContainer.isEditable()) { - xLayoutContainer = (XLayoutContainer) xLayoutContainer.getParent(); - } - } - painter = AdapterBus.getContainerPainter(designer, - xLayoutContainer != null && xLayoutContainer.acceptType(XWAbsoluteLayout.class) ? xLayoutContainer : container); - - // 为界面设计器设置提示渲染提示器 - designer.setPainter(painter); - - // 将当前容器更新为新的容器 - current = container; - } else { - // 获取当前设计界面的提示渲染器 - Painter p = designer.getPainter(); - if (p instanceof HoverPainter) { - painter = (HoverPainter) p; - } - } + dealWithContainer(x, y, container); - if (painter != null) { - // 为提示渲染器设置焦点位置、区域等渲染参数 - Rectangle rect = ComponentUtils.getRelativeBounds(container); - rect.x -= designer.getArea().getHorizontalValue(); - rect.y -= designer.getArea().getVerticalValue(); - painter.setRenderingBounds(rect); - painter.setHotspot(new Point(x, y)); - painter.setCreator(addingModel.getXCreator()); - } } else { // 如果鼠标不在任何组件上,则取消提示器 designer.setPainter(null); @@ -178,6 +137,49 @@ public class FormCreatorDropTarget extends DropTarget { designer.repaint(); } + private void dealWithContainer(int x, int y, XLayoutContainer container) { + HoverPainter painter = null; + + if (container != current || designer.getPainter() == null) { + // 如果焦点容器不是当前容器 + if (current != null) { + // 取消前一个焦点容器的提示渲染器 + designer.setPainter(null); + } + //获取painter的时候要考虑布局之间嵌套的问题 + XLayoutContainer xLayoutContainer = container.getTopLayout(); + if (xLayoutContainer != null && xLayoutContainer.getParent() != null + && ((XLayoutContainer) xLayoutContainer.getParent()).acceptType(XWAbsoluteLayout.class)) { + if (!xLayoutContainer.isEditable()) { + xLayoutContainer = (XLayoutContainer) xLayoutContainer.getParent(); + } + } + painter = AdapterBus.getContainerPainter(designer, + xLayoutContainer != null && xLayoutContainer.acceptType(XWAbsoluteLayout.class) ? xLayoutContainer : container); + + // 为界面设计器设置提示渲染提示器 + designer.setPainter(painter); + + // 将当前容器更新为新的容器 + current = container; + } else { + // 获取当前设计界面的提示渲染器 + Painter p = designer.getPainter(); + if (p instanceof HoverPainter) { + painter = (HoverPainter) p; + } + } + if (painter != null) { + // 为提示渲染器设置焦点位置、区域等渲染参数 + Rectangle rect = ComponentUtils.getRelativeBounds(container); + rect.x -= designer.getArea().getHorizontalValue(); + rect.y -= designer.getArea().getVerticalValue(); + painter.setRenderingBounds(rect); + painter.setHotspot(new Point(x, y)); + painter.setCreator(addingModel.getXCreator()); + } + } + private void promptUser(int x, int y, XLayoutContainer container) { if (!addingModel.getXCreator().canEnterIntoParaPane() && container.acceptType(XWParameterLayout.class)) { promptButton.setText(Inter.getLocText("FR-Designer_Forbid_Drag_into_Para_Pane"));