Revision 45274

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/SearchConditionFieldController.java
444 444

  
445 445
    final List<Object> values = new ArrayList<>();
446 446
    final DefaultComboBoxModel model = new DefaultComboBoxModel();
447
    this.setEnabled(false);
448
    final FeatureStore theStore = field.getFeatureStore();
449
    final FeatureQuery query = parameters.getQuery().getCopy(); // theStore.createFeatureQuery();
447
    final FeatureStore theStore = field.getFeatureStore(); 
448
    final FeatureQuery query;
449
    if (this.store == theStore) {
450
        query = parameters.getQuery().getCopy(); // theStore.createFeatureQuery();
451
    } else {
452
        query = theStore.createFeatureQuery();
453
    }
450 454
    query.addAttributeName(field.getDescriptor().getName());
451 455
    query.setFilter("");
452 456
    query.setLimit(updateValuesFeaturesLimit);
......
524 528
        SwingUtilities.invokeLater(new Runnable() {
525 529
          @Override
526 530
          public void run() {
531
            setEnabled(false);
527 532
            cboValue.setModel(model);
528 533
            if (valueAssigned != null) {
529 534
              cboValue.setSelectedItem(valueAssigned);
......
538 543
  }
539 544

  
540 545
  public void setEnabled(boolean enabled) {
541
    this.ddnFields.setEnabled(enabled);
542
    if (this.ddnLogicalOperators != null) {
543
      this.ddnLogicalOperators.setEnabled(enabled);
544
    }
545
    this.ddnRelationalOperators.setEnabled(enabled);
546
    this.lblExtraFields.setEnabled(enabled);
547
    this.cboValue.setEnabled(enabled);
546
      ddnFields.setEnabled(enabled);
547
      if (ddnLogicalOperators != null) {
548
          ddnLogicalOperators.setEnabled(enabled);
549
      }
550
      ddnRelationalOperators.setEnabled(enabled);
551
      lblExtraFields.setEnabled(enabled);
552
      cboValue.setEnabled(enabled);
548 553
  }
549 554

  
550 555
  public String getRelationalOperator() {
......
629 634
    }
630 635
  }
631 636

  
632
  public void setValue(Object value) {
633
    this.cboValue.setSelectedItem(value);
634
    this.valueAssigned = value;
635
  }
637
    public void setValue(Object value) {
638
        //this.cboValue.setSelectedItem(value);
639
        SwingUtilities.invokeLater(new Runnable() {
640
            @Override
641
            public void run() {
642
                DefaultComboBoxModel model = (DefaultComboBoxModel) cboValue.getModel();
643
                for (int i = 0; i < model.getSize(); i++) {
644
                    Object item = model.getElementAt(i);
645
                    if (item.equals(value)) {
646
                        cboValue.setSelectedIndex(i);
647
                        valueAssigned = value;
648
                        return;
649
                    }
650
                }
651
                // si no lo encuentra en el modelo lo a?ade
652
                final Field field = (Field) ddnFields.getSelectedItem();
653
                if (field == null) {
654
                    return;
655
                } else {
656
                    LabeledValue[] availableValues = field.getDescriptor().getAvailableValues();
657
                    Map<String, String> availableValuesMap = new HashMap<>();
658
                    if (availableValues != null) {
659
                        for (LabeledValue availableValue : availableValues) {
660
                            availableValuesMap.put(
661
                                    Objects.toString(availableValue.getValue()),
662
                                    availableValue.getLabel()
663
                            );
664
                        }
665
                    }
666
                    String key;
667
                    if (value instanceof Date) {
668
                        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
669
                        df.setLenient(false);
670
                        key = df.format(value);
671
                    } else {
672
                        key = Objects.toString(value);
673
                    }
674
                    String label = availableValuesMap.getOrDefault(key, key);
675
                    LabeledValueImpl newItem = new LabeledValueImpl(label, value);
676
                    model.addElement(newItem);
677
                    cboValue.setSelectedItem(newItem);
678
                    valueAssigned = newItem;
679
                }
680
            }
681
        });
682
    }
636 683

  
637 684
  private Field getCurrentField() {
638 685
    final Field field = (Field) this.ddnFields.getSelectedItem();
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/DefaultSearchPanel.java
89 89
import org.gvsig.fmap.dal.swing.impl.featurequery.DefaultFeatureQueryCalculatedColumnsPanel;
90 90
import org.gvsig.fmap.dal.swing.featuretype.FeatureAttributesSelectionPanel;
91 91
import org.gvsig.fmap.dal.swing.searchpanel.SearchParameters;
92
import org.gvsig.tools.bookmarksandhistory.Bookmark;
92 93
import org.gvsig.tools.bookmarksandhistory.Bookmarks;
93 94
import org.gvsig.tools.bookmarksandhistory.History;
94 95
import org.gvsig.tools.dispose.Disposable;
......
577 578
                        }
578 579
                        clear();
579 580
                        put(searchParams);
581
                        search();
580 582
                        break;
581 583
                }
582 584

  
......
599 601
                }
600 602
            }
601 603
        });
604
        if (this.bookmarks.hasBookmark(this.store.getName())) {
605
            Bookmark<DefaultSearchParameters> initBookmark = this.bookmarks.get(this.store.getName());
606
            DefaultSearchParameters initSearchParams = initBookmark.getValue().getCopy();
607
            clear();
608
            put(initSearchParams);
609
        }
602 610
        search();
603 611
    }
604 612
    
......
649 657

  
650 658
    @Override
651 659
    public void clear() {
660
        this.lblMsg.setText("");
652 661
        if (this.conditionPanels == null) {
653 662
            return;
654 663
        }

Also available in: Unified diff