package org.vaadin.mideaas.frontend; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactoryConfigurationError; import org.vaadin.mideaas.frontend.PomXml.Dependency; import org.vaadin.mideaas.model.SharedProject; import org.xml.sax.SAXException; import com.vaadin.data.Item; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Notification; import com.vaadin.ui.Table; import com.vaadin.ui.TextArea; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; @SuppressWarnings("serial") public class AddonManagementWindow extends Window { private final SharedProject project; private Table table = new Table("Dependencies"); private TextArea addon = new TextArea("Dependency Maven XML snippet"); private Button removeButton = new Button("Remove selected"); private Button addButton = new Button("Add Dependency"); public AddonManagementWindow(SharedProject project) { super("Add-ons"); this.project = project; table.setSizeUndefined(); table.setSelectable(true); table.setPageLength(0); table.addContainerProperty("groupId", String.class, "foo"); table.addContainerProperty("artifactId", String.class, "bar"); table.addContainerProperty("version", String.class, "baz"); } @Override public void attach() { super.attach(); VerticalLayout la = new VerticalLayout(); la.setMargin(true); setContent(la); la.addComponent(table); la.addComponent(removeButton); la.addComponent(addon); la.addComponent(addButton); removeButton.addClickListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) { Item d = table.getItem(table.getValue()); String groupId = (String)d.getItemProperty("groupId").getValue(); String artifactId = (String)d.getItemProperty("artifactId").getValue(); String version = (String)d.getItemProperty("version").getValue(); removeAddon(groupId, artifactId, version); } }); addButton.addClickListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) { String s = addon.getValue(); if (s!=null && !s.isEmpty()) { addAddon(s); } } }); updateTable(); } private void removeAddon(String groupId, String artifactId, String version) { project.removeDependency(new Dependency(groupId, artifactId, version)); updateTable(); } private void addAddon(String s) { try { project.addDependency(s); updateTable(); } catch (ParserConfigurationException | SAXException | IOException | TransformerFactoryConfigurationError | TransformerException e) { Notification.show("Could not add dependency: "+e.getMessage(), Notification.Type.ERROR_MESSAGE); } } private void updateTable() { table.removeAllItems(); for (Dependency d : project.getDependencies()) { table.addItem(new Object[] {d.groupId, d.artifactId, d.version}, d); } } }