package floobits.dialogs;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import floobits.common.RunLater;
import floobits.utilities.Flog;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.util.List;
public class ShareProjectDialog extends CustomButtonDialogWrapper {
protected ShareProjectForm form = new ShareProjectForm();
private class CreateWorkspaceAction extends DialogWrapper.DialogWrapperAction {
protected CreateWorkspaceAction() {
super("Create Workspace");
}
@Override
protected void doAction(ActionEvent e) {
Flog.info("Creating a workspace from project.");
doOKAction();
}
}
public ShareProjectDialog(String projectName, List<String> orgs, Project project,
final RunLater<ShareProjectDialog> uploadAll,
final RunLater<ShareProjectDialog> uploadPick) {
super(project, true);
if (orgs.size() < 1 && project != null) {
Flog.errorMessage("Unable to share project, do you have a Floobits account?", project);
return;
}
String workspaceName = projectName.replaceAll("[^a-zA-Z0-9\\-_]", "-");
if (!workspaceName.equals(projectName)) {
form.setWarning("Replaced at least one non-valid character with a dash.");
}
form.setWorkSpaceName(workspaceName);
form.setOrgs(orgs);
final ShareProjectDialog self = this;
this.setTitle("Create a New Workspace");
CustomButtonAction abortAction = new CustomButtonAction("Cancel", new Runnable() {
@Override
public void run() {
Flog.warn("User aborted joining workspace.");
}
});
CustomButtonAction uploadProject = new CustomButtonAction("Upload Entire Project", new Runnable() {
@Override
public void run() {
uploadAll.run(self);
}
});
CustomButtonAction uploadFiles = new CustomButtonAction("Select Files to Upload", new Runnable() {
@Override
public void run() {
uploadPick.run(self);
}
});
actions = new Action[]{uploadProject, uploadFiles, abortAction};
init();
}
@Override
public JComponent createCenterPanel() {
return form.getContentPanel();
}
@Override
public void createDefaultActions() {
super.createDefaultActions();
myOKAction = new CreateWorkspaceAction();
}
public String getWorkspaceName() {
return form.getWorkspaceName();
}
public String getOrgName() {
return form.getSelectedOrg();
}
}