Browse Source

Pull request #4125: REPORT-50908 填报-填报属性设置-填报属性中对表查询定位的问题

Merge in DESIGN/design from ~LUCIAN.CHEN/design:bugfix/10.0 to bugfix/10.0

* commit '67f2694862ed2a2216df19e3874c45c5c7189572':
  REPORT-50908 填报-填报属性设置-填报属性中对表查询定位的问题
  REPORT-50908 填报-填报属性设置-填报属性中对表查询定位的问题
bugfix/10.0
Lucian.Chen 4 years ago
parent
commit
e0860282ae
  1. 22
      designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java
  2. 1
      designer-base/src/main/java/com/fr/design/gui/icombobox/FRTreeComboBox.java
  3. 12
      designer-base/src/main/java/com/fr/design/gui/icombobox/SearchPreTaskTreeComboBox.java

22
designer-base/src/main/java/com/fr/design/data/datapane/ChoosePane.java

@ -1,6 +1,7 @@
package com.fr.design.data.datapane;
import com.fr.base.TableData;
import com.fr.concurrent.NamedThreadFactory;
import com.fr.data.core.DataCoreUtils;
import com.fr.data.core.db.DBUtils;
import com.fr.data.core.db.TableProcedure;
@ -17,8 +18,8 @@ import com.fr.design.data.datapane.preview.PreviewLabel.Previewable;
import com.fr.design.data.datapane.preview.PreviewTablePane;
import com.fr.design.data.tabledata.Prepare4DataSourceChange;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.gui.icombobox.FRTreeComboBox;
import com.fr.design.gui.icombobox.FilterableComboBoxModel;
import com.fr.design.gui.icombobox.SearchPreTaskTreeComboBox;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.UIComboBoxEditor;
import com.fr.design.gui.icombobox.UIComboBoxRenderer;
@ -59,6 +60,10 @@ import java.util.Collection;
import java.util.Enumeration;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
/**
* @author zhou
@ -80,7 +85,9 @@ public class ChoosePane extends BasicBeanPane<DataBaseItems> implements Refresha
/**
* 表名
*/
protected FRTreeComboBox tableNameComboBox;
protected SearchPreTaskTreeComboBox tableNameComboBox;
private static final ExecutorService SERVICE = Executors.newSingleThreadExecutor(new NamedThreadFactory("ChoosePane"));
private SwingWorker populateWorker;
@ -88,12 +95,15 @@ public class ChoosePane extends BasicBeanPane<DataBaseItems> implements Refresha
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
new Thread() {
FutureTask<Void> task = new FutureTask<Void>(new Callable<Void>() {
@Override
public void run() {
public Void call() throws Exception {
calculateTableDataNames();
return null;
}
}.start();
});
tableNameComboBox.setPreSearchTask(task);
SERVICE.submit(task);
}
@Override
@ -157,7 +167,7 @@ public class ChoosePane extends BasicBeanPane<DataBaseItems> implements Refresha
schemaBox = new StringUIComboBox();
schemaBox.setEditor(new ComboBoxEditor());
tableNameComboBox = new FRTreeComboBox(new JTree(new DefaultMutableTreeNode()), tableNameTreeRenderer, false);
tableNameComboBox = new SearchPreTaskTreeComboBox(new JTree(new DefaultMutableTreeNode()), tableNameTreeRenderer, false);
tableNameComboBox.setEditable(true);
tableNameComboBox.setRenderer(listCellRenderer);
registerDSChangeListener();

1
designer-base/src/main/java/com/fr/design/gui/icombobox/FRTreeComboBox.java

@ -626,6 +626,7 @@ public class FRTreeComboBox extends UIComboBox {
*/
protected void search() {
this.item = textField.getText();
tree.updateUI();
TreeNode root = (TreeNode) tree.getModel().getRoot();
TreePath parent = new TreePath(root);
TreeNode node = (TreeNode) parent.getLastPathComponent();

12
designer-base/src/main/java/com/fr/design/gui/icombobox/SearchPreTaskTreeComboBox.java

@ -1,6 +1,5 @@
package com.fr.design.gui.icombobox;
import com.fr.design.ui.util.UIUtil;
import com.fr.log.FineLoggerFactory;
import javax.swing.JTree;
@ -48,7 +47,6 @@ public class SearchPreTaskTreeComboBox extends FRTreeComboBox {
return;
}
setPopupVisible(true);
// 模糊搜索异步
new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() {
@ -65,14 +63,14 @@ public class SearchPreTaskTreeComboBox extends FRTreeComboBox {
// 任务执行后置空,否则会被别的操作重复触发
setPreSearchTask(null);
}
UIUtil.invokeLaterIfNeeded(new Runnable() {
return null;
}
@Override
public void run() {
protected void done() {
// 模糊搜索
search();
}
});
return null;
}
}.execute();
}
}

Loading…
Cancel
Save