@ -25,6 +25,7 @@ import com.fr.design.gui.icombobox.UIComboBoxEditor;
import com.fr.design.gui.icombobox.UIComboBoxRenderer ;
import com.fr.design.gui.icombobox.UIComboBoxRenderer ;
import com.fr.design.gui.ilable.UILabel ;
import com.fr.design.gui.ilable.UILabel ;
import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode ;
import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode ;
import com.fr.design.i18n.Toolkit ;
import com.fr.design.layout.FRGUIPaneFactory ;
import com.fr.design.layout.FRGUIPaneFactory ;
import com.fr.design.layout.TableLayout ;
import com.fr.design.layout.TableLayout ;
import com.fr.design.layout.TableLayoutHelper ;
import com.fr.design.layout.TableLayoutHelper ;
@ -39,7 +40,16 @@ import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext ;
import com.fr.workspace.WorkContext ;
import com.fr.workspace.server.connection.DBConnectAuth ;
import com.fr.workspace.server.connection.DBConnectAuth ;
import javax.swing.* ;
import java.awt.BorderLayout ;
import java.awt.Component ;
import java.awt.Dimension ;
import java.util.Collections ;
import java.util.concurrent.CancellationException ;
import javax.swing.JList ;
import javax.swing.JOptionPane ;
import javax.swing.JPanel ;
import javax.swing.JTree ;
import javax.swing.SwingWorker ;
import javax.swing.event.ChangeEvent ;
import javax.swing.event.ChangeEvent ;
import javax.swing.event.ChangeListener ;
import javax.swing.event.ChangeListener ;
import javax.swing.event.PopupMenuEvent ;
import javax.swing.event.PopupMenuEvent ;
@ -50,7 +60,6 @@ import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeCellRenderer ;
import javax.swing.tree.TreeCellRenderer ;
import javax.swing.tree.TreeNode ;
import javax.swing.tree.TreeNode ;
import javax.swing.tree.TreePath ;
import javax.swing.tree.TreePath ;
import java.awt.* ;
import java.awt.event.FocusAdapter ;
import java.awt.event.FocusAdapter ;
import java.awt.event.FocusEvent ;
import java.awt.event.FocusEvent ;
import java.awt.event.ItemEvent ;
import java.awt.event.ItemEvent ;
@ -70,6 +79,9 @@ import java.util.concurrent.FutureTask;
* @since 2012 - 7 - 11下午4 : 49 : 39
* @since 2012 - 7 - 11下午4 : 49 : 39
* /
* /
public class ChoosePane extends BasicBeanPane < DataBaseItems > implements Refreshable , Previewable , Prepare4DataSourceChange {
public class ChoosePane extends BasicBeanPane < DataBaseItems > implements Refreshable , Previewable , Prepare4DataSourceChange {
private static final List < String > PENDING_CONTENT = new ArrayList < > ( Collections . singletonList ( Toolkit . i18nText ( "Fine-Design_Basic_Loading" ) + "..." ) ) ;
private static final double COLUMN_SIZE = 24 ;
private static final double COLUMN_SIZE = 24 ;
/ * *
/ * *
@ -91,6 +103,8 @@ public class ChoosePane extends BasicBeanPane<DataBaseItems> implements Refresha
private SwingWorker populateWorker ;
private SwingWorker populateWorker ;
private SwingWorker < List < String > , Void > initWorker ;
private PopupMenuListener popupMenuListener = new PopupMenuListener ( ) {
private PopupMenuListener popupMenuListener = new PopupMenuListener ( ) {
@Override
@Override
@ -213,10 +227,34 @@ public class ChoosePane extends BasicBeanPane<DataBaseItems> implements Refresha
@SuppressWarnings ( "unchecked" )
@SuppressWarnings ( "unchecked" )
protected void initDsNameComboBox ( ) {
protected void initDsNameComboBox ( ) {
if ( initWorker ! = null & & ! initWorker . isDone ( ) ) {
initWorker . cancel ( true ) ;
}
dsNameComboBox . setRefreshingModel ( true ) ;
dsNameComboBox . setRefreshingModel ( true ) ;
FilterableComboBoxModel dsNameComboBoxModel = new FilterableComboBoxModel ( getHasAuthConnections ( ) ) ;
dsNameComboBox . setModel ( new FilterableComboBoxModel ( PENDING_CONTENT ) ) ;
initWorker = new SwingWorker < List < String > , Void > ( ) {
@Override
protected List < String > doInBackground ( ) throws Exception {
return getHasAuthConnections ( ) ;
}
@Override
protected void done ( ) {
try {
FilterableComboBoxModel dsNameComboBoxModel = new FilterableComboBoxModel ( get ( ) ) ;
String selected = dsNameComboBox . getSelectedItem ( ) ;
dsNameComboBox . setModel ( dsNameComboBoxModel ) ;
dsNameComboBox . setModel ( dsNameComboBoxModel ) ;
dsNameComboBox . setSelectedItem ( selected ) ;
dsNameComboBox . setRefreshingModel ( false ) ;
dsNameComboBox . setRefreshingModel ( false ) ;
} catch ( Exception e ) {
if ( ! ( e instanceof CancellationException ) ) {
FineLoggerFactory . getLogger ( ) . error ( e . getMessage ( ) , e ) ;
}
}
}
} ;
initWorker . execute ( ) ;
}
}
protected void initComponentsLayout ( PreviewLabel previewLabel , int labelSize ) {
protected void initComponentsLayout ( PreviewLabel previewLabel , int labelSize ) {