Browse Source
Merge in DESIGN/design from ~YVAN/design:feature/x to feature/x * commit '87123b36be35e84d22c66f5b27ceb51aed58540a': REPORT-72635 - 数据连接面板为空的问题(含控制权限) 【问题原因】迭代任务,问题与改动思路详见https://kms.fineres.com/pages/viewpage.action?pageId=443822299 【改动思路】同上 【review建议】无feature/x
Yvan
2 years ago
9 changed files with 396 additions and 31 deletions
@ -0,0 +1,40 @@ |
|||||||
|
package com.fr.design.data.datapane.auth; |
||||||
|
|
||||||
|
import com.fr.base.TableData; |
||||||
|
import com.fr.data.impl.DBTableData; |
||||||
|
import com.fr.decision.base.util.CollectionUtil; |
||||||
|
import com.fr.stable.collections.CollectionUtils; |
||||||
|
import com.fr.workspace.WorkContext; |
||||||
|
import com.fr.workspace.server.connection.DBConnectAuth; |
||||||
|
|
||||||
|
import javax.swing.SwingWorker; |
||||||
|
import java.util.Collection; |
||||||
|
import java.util.Collections; |
||||||
|
|
||||||
|
/** |
||||||
|
* 数据连接权限相关的工具类 |
||||||
|
* @author Yvan |
||||||
|
*/ |
||||||
|
public class TableDataAuthHelper { |
||||||
|
|
||||||
|
/** |
||||||
|
* 编辑数据集时是否需要检查权限 |
||||||
|
* @param tableData |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static boolean needCheckAuthWhenEdit(TableData tableData) { |
||||||
|
// 远程设计下,编辑DBTableData时需要判断权限
|
||||||
|
return !WorkContext.getCurrent().isLocal() && tableData instanceof DBTableData; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取无权限数据连接集合 |
||||||
|
* 远程下需要调用RPC,为耗时操作,谨慎使用 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static Collection<String> getNoAuthConnections() { |
||||||
|
// 获取无权限连接集合
|
||||||
|
Collection<String> noAuthConnections = WorkContext.getCurrent().get(DBConnectAuth.class).getNoAuthConnections(); |
||||||
|
return noAuthConnections == null ? Collections.emptyList() : noAuthConnections; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package com.fr.design.data.tabledata.tabledatapane.loading; |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 可切换的DBTableData对应的数据集面板,需要使用CardLayout布局 |
||||||
|
* 主要是给插件适配用的 |
||||||
|
* @author Yvan |
||||||
|
*/ |
||||||
|
public interface SwitchableTableDataPane { |
||||||
|
|
||||||
|
/** Loading面板 */ |
||||||
|
String LOADING_PANE_NAME = "Loading"; |
||||||
|
/** 内容面板 */ |
||||||
|
String CONTENT_PANE_NAME = "Content"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据面板名称切换面板 |
||||||
|
* @param paneName 面板名称 |
||||||
|
*/ |
||||||
|
void switchTo(String paneName); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
package com.fr.design.data.tabledata.tabledatapane.loading; |
||||||
|
|
||||||
|
import com.fr.design.dialog.BasicPane; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import java.awt.CardLayout; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Yvan |
||||||
|
*/ |
||||||
|
public class TableDataLoadingPane extends BasicPane { |
||||||
|
|
||||||
|
/** Loading面板 */ |
||||||
|
public static final String LOADING_PANE_NAME = "Loading"; |
||||||
|
/** 无权限提示面板 */ |
||||||
|
public static final String NO_AUTH_PANE_NAME = "NoAuthority"; |
||||||
|
/** 错误提示面板 */ |
||||||
|
public static final String ERROR_NAME = "Error"; |
||||||
|
|
||||||
|
private CardLayout card; |
||||||
|
|
||||||
|
/** 加载中面板 */ |
||||||
|
private JPanel loadingPane; |
||||||
|
/** 错误提示面板 */ |
||||||
|
private JPanel errorPane; |
||||||
|
/** 数据连接无权限面板 */ |
||||||
|
private JPanel noAuthorityPane; |
||||||
|
|
||||||
|
public TableDataLoadingPane() { |
||||||
|
initPanes(); |
||||||
|
} |
||||||
|
|
||||||
|
private void initPanes() { |
||||||
|
card = new CardLayout(); |
||||||
|
this.setLayout(card); |
||||||
|
loadingPane = new TipsPane(true); |
||||||
|
errorPane = new TipsPane(Toolkit.i18nText("Fine-Design_Basic_Database_Connection_Error")); |
||||||
|
noAuthorityPane = new TipsPane(Toolkit.i18nText("Fine-Design_Basic_Database_Connection_No_Auth")); |
||||||
|
add(LOADING_PANE_NAME, loadingPane); |
||||||
|
add(NO_AUTH_PANE_NAME, noAuthorityPane); |
||||||
|
add(ERROR_NAME, errorPane); |
||||||
|
switchTo(LOADING_PANE_NAME); |
||||||
|
} |
||||||
|
|
||||||
|
public void switchTo(String panelName) { |
||||||
|
card.show(this, panelName); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected String title4PopupWindow() { |
||||||
|
return "数据集查询"; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,45 @@ |
|||||||
|
package com.fr.design.data.tabledata.tabledatapane.loading; |
||||||
|
|
||||||
|
import com.fr.design.gui.ilable.UILabel; |
||||||
|
import com.fr.design.i18n.Toolkit; |
||||||
|
import com.fr.design.layout.FRGUIPaneFactory; |
||||||
|
|
||||||
|
import javax.swing.JPanel; |
||||||
|
import javax.swing.JProgressBar; |
||||||
|
import javax.swing.SwingConstants; |
||||||
|
import java.awt.BorderLayout; |
||||||
|
|
||||||
|
/** |
||||||
|
* 提示面板,支持自定义提示,支持进度条配置可选 |
||||||
|
* @author Yvan |
||||||
|
*/ |
||||||
|
public class TipsPane extends JPanel { |
||||||
|
|
||||||
|
/** |
||||||
|
* 默认提示 |
||||||
|
*/ |
||||||
|
private static final String LOADING = Toolkit.i18nText("Fine-Design_Basic_Loading_And_Waiting"); |
||||||
|
|
||||||
|
public TipsPane () { |
||||||
|
this(LOADING, false); |
||||||
|
} |
||||||
|
|
||||||
|
public TipsPane (String tip) { |
||||||
|
this(tip, false); |
||||||
|
} |
||||||
|
|
||||||
|
public TipsPane (boolean needProgressBar) { |
||||||
|
this(LOADING, needProgressBar); |
||||||
|
} |
||||||
|
|
||||||
|
public TipsPane (String tips, boolean needProgressBar) { |
||||||
|
this.setLayout(FRGUIPaneFactory.createBorderLayout()); |
||||||
|
UILabel tipsLabel = new UILabel(tips, SwingConstants.CENTER); |
||||||
|
this.add(tipsLabel, BorderLayout.CENTER); |
||||||
|
if (needProgressBar) { |
||||||
|
JProgressBar progressBar = new JProgressBar(); |
||||||
|
progressBar.setIndeterminate(true); |
||||||
|
this.add(progressBar, BorderLayout.SOUTH); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue