@Override public void destroy() throws IOException { new CloseProductAction(Collections.singletonList(getProduct())).execute(); }
static Product findFirstSourceProduct(Product productToClose, Set<Product> productsStillOpen) { Product firstSourceProduct = findFirstDirectSourceProduct(productToClose, productsStillOpen); if (firstSourceProduct != null) { return firstSourceProduct; } return findFirstExpressionSourceProduct(productToClose, productsStillOpen); }
private void setActionName() { Set<Product> selectedProducts = getSelectedProducts(); if (selectedProducts.size() > 1) { this.putValue(Action.NAME, String.format("Close %d Products", selectedProducts.size())); } else { this.putValue(Action.NAME, "Close Product"); } }
@Override public void resultChanged(LookupEvent lookupEvent) { setEnableState(); setActionName(); }
@Test public void testFindFirstSourceProduct_IgnoreIndependent() throws Exception { Product toBeClosedProduct = new Product("ToBeClosed", "Type", 100, 100); Product dependingProduct = new Product("dependingProduct", "Type", 100, 100); Product dependentProduct = createDependentProduct(dependingProduct); HashSet<Product> stillOpen = new HashSet<>(Collections.singletonList(dependentProduct)); stillOpen.add(dependingProduct); Product firstSourceProduct = CloseProductAction.findFirstSourceProduct(toBeClosedProduct, stillOpen); assertNull(firstSourceProduct); }
/** * Executes the action command. * * @return {@code Boolean.TRUE} on success, {@code Boolean.FALSE} on failure, or {@code null} on cancellation. */ public Boolean execute() { Boolean status; if (!productSet.isEmpty()) { // Case 1: If productSet is not empty, action has been constructed with selected products status = closeProducts(productSet); productSet.clear(); } else { // Case 2: If productSet is empty, default constructor has been called status = closeProducts(getSelectedProducts()); } return status; }
/** * Executes the action command. * * @return {@code Boolean.TRUE} on success, {@code Boolean.FALSE} on failure, or {@code null} on cancellation. */ public Boolean execute() { Set<Product> collect = Stream.of(SnapApp.getDefault().getProductManager().getProducts()).collect(Collectors.toSet()); return CloseProductAction.closeProducts(collect); }
@Override public Action createContextAwareInstance(Lookup actionContext) { return new CloseProductAction(actionContext); }
@Override public void actionPerformed(ActionEvent e) { execute(); }
return openProduct; } else { Product indirectSourceProduct = findFirstDirectSourceProduct(sourceProduct, productsStillOpen); if (indirectSourceProduct != null && productToBeClosed.equals(indirectSourceProduct)) { return openProduct; return openProduct; Product indirectSourceProduct = findFirstDirectSourceProduct(sourceProduct, productsStillOpen); if (indirectSourceProduct != null && productToBeClosed.equals(indirectSourceProduct)) { return openProduct;
@Test public void testFindFirstSourceProduct() throws Exception { Product toBeClosedProduct = new Product("ToBeClosed", "Type", 100, 100); Product dependentProduct = createDependentProduct(toBeClosedProduct); HashSet<Product> stillOpen = new HashSet<>(Collections.singletonList(dependentProduct)); Product firstSourceProduct = CloseProductAction.findFirstSourceProduct(toBeClosedProduct, stillOpen); assertEquals(dependentProduct, firstSourceProduct); }
public CloseProductAction(Lookup actionContext) { super(Bundle.CTL_CloseProductActionName()); this.lkp = actionContext; Lookup.Result<ProductNode> productNode = lkp.lookupResult(ProductNode.class); productNode.addLookupListener(WeakListeners.create(LookupListener.class, this, productNode)); setEnableState(); setActionName(); }
@Override public void actionPerformed(final ActionEvent event) { final ProductNode productNode = lkp.lookup(ProductNode.class); products = SnapApp.getDefault().getProductManager().getProducts(); // final Product selectedProduct = productNode.getProduct(); List<Product> selectedProduct = (List<Product>) selectedProductList.stream().collect(Collectors.toList()); final Set<Product> productsToClose = new HashSet<>(); for (Product product : products) { if (!selectedProduct.contains(product)) { productsToClose.add(product); } } CloseProductAction.closeProducts(productsToClose); setEnableState(); }
Product firstSourceProduct = findFirstSourceProduct(productToBeClosed, stillOpenProducts); if (firstSourceProduct != null) { Dialogs.showInformation("Close Not Possible",