void setElements(String[] elements) throws ValidationException { if (!list.isEmpty()) { final int endIndex = list.size() - 1; list.clear(); fireIntervalRemoved(this, 0, endIndex); } final File[] files = new File[elements.length]; for (int i = 0; i < files.length; i++) { files[i] = new File(elements[i]); } addElements(files); }
@Override public void propertyChange(PropertyChangeEvent evt) { if (!internalPropertyChange) { Object newValue = evt.getNewValue(); try { if (newValue == null) { clear(); } else { setElements((String[]) newValue); } } catch (ValidationException e) { BeamLogManager.getSystemLogger().log(Level.SEVERE, "Problems at setElements.", e); } } } });
/** * Returns those source products that have been chosen from the product tree. * * @return An array of source products. */ public Product[] getSourceProducts() { return listModel.getSourceProducts(); }
void addElements(Object... elements) throws ValidationException { final int startIndex = list.size(); for (Object element : elements) { if (!(element instanceof File || element instanceof Product)) { throw new IllegalStateException( "Only java.io.File or org.esa.beam.framework.datamodel.Product allowed."); } if (mayAdd(element)) { list.add(element); } } updateProperty(); fireIntervalAdded(this, startIndex, list.size() - 1); }
@Test public void testClear() throws Exception { listModel.addElements(new File("abc")); listModel.addElements(new File("def")); listModel.addElements(new Product("def", "producttype", 10, 10)); listModel.addElements(new Product("dummy", "producttype", 10, 10)); assertEquals(4, listModel.getSize()); listModel.clear(); assertEquals(0, listModel.getSize()); assertEquals(0, listModel.getSourceProducts().length); assertEquals(0, ((String[]) property.getValue()).length); }
@Test public void testAddAndRemove() throws ValidationException { listModel.addElements(new File(".")); listModel.addElements(new File(".")); assertEquals(1, listModel.getSize()); listModel.removeElementsAt(new int[]{0}); assertEquals(0, listModel.getSize()); List<File> files = new ArrayList<>(); files.add(new File("abc")); files.add(new File("def")); files.add(new File("ghi")); listModel.addElements(files.toArray()); assertEquals(3, listModel.getSize()); assertEquals(3, ((String[]) property.getValue()).length); List<Product> products = new ArrayList<>(); products.add(new Product("abc", "meris", 10, 120)); products.add(new Product("def", "meris", 10, 120)); products.add(new Product("ghi", "meris", 10, 120)); listModel.addElements(products.toArray()); assertEquals(6, listModel.getSize()); assertEquals(3, listModel.getSourceProducts().length); listModel.removeElementsAt(new int[]{0, 5}); assertEquals(4, listModel.getSize()); assertEquals(2, ((String[]) property.getValue()).length); assertEquals(2, listModel.getSourceProducts().length); }
/** * Allows clients to add single products. * * @param product A product to add. */ public void addProduct(Product product) { if (product != null) { try { listModel.addElements(product); } catch (ValidationException ve) { Debug.trace(ve); } } }
@Before public void setUp() { property = Property.create("property", String[].class); property.setContainer(new PropertyContainer()); listModel = new InputListModel(); listModel.setProperty(property); }
@Test public void testSetElements() throws ValidationException { final String[] elements1 = {"a", "b", "c"}; listModel.setElements(elements1); assertEquals(3, listModel.getSize()); final String[] values1 = property.getValue(); assertArrayEquals(elements1, values1); final String[] elements2 = {"f", "s", "g", "k"}; listModel.setElements(elements2); assertEquals(4, listModel.getSize()); final String[] values2 = property.getValue(); assertArrayEquals(elements2, values2); }
@Override public void unbindComponents() { listModel.setProperty(null); }
/** * Clears the list of source products. */ public void clear() { listModel.clear(); }
@Override public void actionPerformed(ActionEvent e) { listModel.removeElementsAt(inputPathsList.getSelectedIndices()); } });
/** * Constructor. * * @param appContext The context of the app using this component. * */ public SourceProductList(AppContext appContext) { this.appContext = appContext; this.listModel = new InputListModel(); this.inputPathsList = createInputPathsList(listModel); this.lastOpenInputDir = "org.esa.beam.framework.ui.product.lastOpenInputDir"; this.lastOpenedFormat = "org.esa.beam.framework.ui.product.lastOpenedFormat"; this.xAxis = true; }
/** * Add a listener that is informed every time the list's contents change. * @param changeListener the listener to add */ public void addChangeListener(ListDataListener changeListener) { listModel.addListDataListener(changeListener); }
private boolean mayAdd(Object element) { if (list.contains(element)) { return false; } if (element instanceof Product) { return true; } File file = (File) element; return file.isDirectory() || !alreadyContained(file); }
@Test(expected = IllegalStateException.class) public void testFailingWithIllegalStateException() throws Exception { listModel.addElements(""); }
@Override public void bindComponents() { String propertyName = getBinding().getPropertyName(); Property property = getBinding().getContext().getPropertySet().getProperty(propertyName); Assert.argument(property.getType().equals(String[].class), "property '" + propertyName +"' must be of type String[].class"); listModel.setProperty(property); }
@Override public void actionPerformed(ActionEvent e) { ProductChooser productChooser = new ProductChooser(appContext.getApplicationWindow(), "Add product", ModalDialog.ID_OK_CANCEL, null, filterProducts()); if (productChooser.show() != ModalDialog.ID_OK) { return; } try { if (productChooser.getSelectedProducts().size() > 0) { listModel.addElements(productChooser.getSelectedProducts().toArray()); } } catch (ValidationException ve) { Debug.trace(ve); } }
private Product[] filterProducts() { List<Product> currentlyOpenedProducts = Arrays.asList(listModel.getSourceProducts()); List<Product> productManagerProducts = Arrays.asList(appContext.getProductManager().getProducts()); ArrayList<Product> result = new ArrayList<>(); for (Product product : productManagerProducts) { if (!currentlyOpenedProducts.contains(product)) { result.add(product); } } return result.toArray(new Product[result.size()]); }
listModel.addElements(selectedProducts); } catch (ValidationException ve) {