package org.semanticsoft.vaaclipse.p2.sites.ui.impl; import java.io.OutputStream; import org.eclipse.core.runtime.IStatus; import org.eclipse.equinox.p2.core.IProvisioningAgent; import org.eclipse.equinox.p2.core.ProvisionException; import org.semanticsoft.vaaclipse.p2.iservice.ISitesManager; import com.vaadin.event.ShortcutAction; import com.vaadin.event.ShortcutListener; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Label; import com.vaadin.ui.Notification; import com.vaadin.ui.TextField; import com.vaadin.ui.Upload; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Upload.Receiver; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; public class AddSiteDialog extends Window { private Label erroLabel; private TextField textField; private Upload uploadSites; ISitesManager sitesManager; IProvisioningAgent agent; private boolean installed = false; private TextField textRepoName; private String actionButtonLabel; boolean edit = false; public AddSiteDialog(ISitesManager sitesManager, IProvisioningAgent agent) { // TODO Auto-generated constructor stub this.sitesManager = sitesManager; this.agent = agent; edit = false; actionButtonLabel = "Add"; initUI(); } public AddSiteDialog(ISitesManager sitesManager, IProvisioningAgent agent, String uri, String nickName) { // TODO Auto-generated constructor stub this.sitesManager = sitesManager; this.agent = agent; edit = true; actionButtonLabel = "Modify"; initUI(); textField.setValue(uri); textRepoName.setValue(nickName); } private void initUI() { VerticalLayout content = new VerticalLayout(); this.setContent(content); Receiver receiver = new Receiver() { @Override public OutputStream receiveUpload(String filename, String mimeType) { // TODO Auto-generated method stub return null; } }; erroLabel = new Label(); erroLabel.setImmediate(true); content.addComponent(erroLabel); textRepoName = new TextField("Name "); content.addComponent(textRepoName); textField = new TextField("Enter URL here"); content.addComponent(textField); uploadSites = new Upload("Upload here", receiver); content.addComponent(uploadSites); Button buttonAction = new Button(actionButtonLabel); content.addComponent(buttonAction); buttonAction.addClickListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) { // TODO Auto-generated method stub if (edit) { IStatus validate = null; String uri = null; setInstalled(false); try { uri = textField.getValue(); validate = sitesManager.validate(agent, uri); } catch (RuntimeException ex) { ex.printStackTrace(); erroLabel.setValue(ex.getMessage()); return; } erroLabel.setValue(""); String message = validate.getMessage(); if (!validate.isOK()) { erroLabel.setValue(message); return; } sitesManager.removeRepository(uri, agent); try { if (textRepoName.getValue() == null || textRepoName.getValue().isEmpty()) sitesManager.addRepository(uri, agent); else { sitesManager.addRepository(uri, agent, textRepoName.getValue()); } } catch (RuntimeException e) { erroLabel.setValue(e.getMessage()); return; } Notification.show("Repository Modified"); setInstalled(true); AddSiteDialog.this.close(); } else { IStatus validate = null; String uri = null; setInstalled(false); try { uri = textField.getValue(); validate = sitesManager.validate(agent, uri); } catch (RuntimeException ex) { ex.printStackTrace(); erroLabel.setValue(ex.getMessage()); return; } erroLabel.setValue(""); String message = validate.getMessage(); if (!validate.isOK()) { erroLabel.setValue(message); return; } try { if (textRepoName.getValue() == null || textRepoName.getValue().isEmpty()) sitesManager.addRepository(uri, agent); else { sitesManager.addRepository(uri, agent, textRepoName.getValue()); } } catch (RuntimeException e) { erroLabel.setValue(e.getMessage()); return; } Notification.show("Repository added"); setInstalled(true); AddSiteDialog.this.close(); } } }); this.setModal(true); this.center(); } public boolean isInstalled() { return installed; } private void setInstalled(boolean installed) { this.installed = installed; } }