Adds more than just a TA dialog #4
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -42,6 +42,7 @@ public class Main {
 | 
			
		|||
        executor.registerCommand("generate_assignments", new GenerateAssignmentsRepo());
 | 
			
		||||
        executor.registerCommand("define_ta_teams", new DefineTaTeams(app));
 | 
			
		||||
        executor.registerCommand("list_errors", new ListErrors());
 | 
			
		||||
        executor.registerCommand("delete_repos", new DeleteRepos());
 | 
			
		||||
 | 
			
		||||
        logger.info("GithubManager for Github Repositories in Educational Organizations.\n" +
 | 
			
		||||
                "© Andrew Lalis (2018), All rights reserved.\n" +
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -168,6 +168,7 @@ public class GithubManager {
 | 
			
		|||
            if (repo.getName().contains(substring)) {
 | 
			
		||||
                try {
 | 
			
		||||
                    repo.delete();
 | 
			
		||||
                    logger.info("Deleted repository: " + repo.getName());
 | 
			
		||||
                } catch (IOException e) {
 | 
			
		||||
                    InitializerApp.organization.addError(new Error(Severity.HIGH, "Could not delete repository: " + repo.getName()));
 | 
			
		||||
                    e.printStackTrace();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
package nl.andrewlalis.ui.control.command.executables;
 | 
			
		||||
 | 
			
		||||
import nl.andrewlalis.git_api.GithubManager;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Deletes all repositories with a given substring.
 | 
			
		||||
 */
 | 
			
		||||
public class DeleteRepos extends GithubExecutable {
 | 
			
		||||
    @Override
 | 
			
		||||
    protected boolean executeWithManager(GithubManager manager, String[] args) {
 | 
			
		||||
        if (args.length < 1) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        manager.deleteAllRepositories(args[0]);
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +22,9 @@ public class ListErrors implements Executable {
 | 
			
		|||
    @Override
 | 
			
		||||
    public boolean execute(String[] args) {
 | 
			
		||||
        StringBuilder sb = new StringBuilder("Runtime Errors:\n");
 | 
			
		||||
        if (InitializerApp.organization.getErrors().isEmpty()) {
 | 
			
		||||
            sb.append("None");
 | 
			
		||||
        }
 | 
			
		||||
        for (Error error : InitializerApp.organization.getErrors()) {
 | 
			
		||||
            sb.append(error);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
package nl.andrewlalis.ui.control.listeners;
 | 
			
		||||
 | 
			
		||||
import nl.andrewlalis.ui.control.command.CommandExecutor;
 | 
			
		||||
import nl.andrewlalis.ui.view.InitializerApp;
 | 
			
		||||
 | 
			
		||||
import javax.swing.*;
 | 
			
		||||
import java.awt.event.ActionEvent;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * A listener for when the user wants to delete repositories.
 | 
			
		||||
 */
 | 
			
		||||
public class DeleteReposListener extends ExecutableListener {
 | 
			
		||||
 | 
			
		||||
    public DeleteReposListener(CommandExecutor executor, InitializerApp app) {
 | 
			
		||||
        super(executor, app);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void actionPerformed(ActionEvent actionEvent) {
 | 
			
		||||
        String input = JOptionPane.showInputDialog(this.app, "Please enter a string which, if a repository contains it, results in deleting the repository.", "Enter Substing", JOptionPane.QUESTION_MESSAGE);
 | 
			
		||||
        if (input != null) {
 | 
			
		||||
            int decision = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete all repositories that contain \"" + "\" in their name?", "Delete Repositories", JOptionPane.YES_NO_OPTION);
 | 
			
		||||
            if (decision == JOptionPane.YES_OPTION) {
 | 
			
		||||
                this.executor.executeCommand("delete_repos", new String[]{
 | 
			
		||||
                        app.getOrganizationName(),
 | 
			
		||||
                        app.getAccessToken(),
 | 
			
		||||
                        input
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -7,6 +7,7 @@ import nl.andrewlalis.ui.control.listeners.*;
 | 
			
		|||
 | 
			
		||||
import javax.swing.*;
 | 
			
		||||
import java.awt.*;
 | 
			
		||||
import java.awt.event.ActionListener;
 | 
			
		||||
import java.util.logging.Level;
 | 
			
		||||
import java.util.logging.Logger;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -118,23 +119,22 @@ public class InitializerApp extends JFrame {
 | 
			
		|||
        JPanel commonActionsPanel = new JPanel();
 | 
			
		||||
        commonActionsPanel.setLayout(new BoxLayout(commonActionsPanel, BoxLayout.PAGE_AXIS));
 | 
			
		||||
 | 
			
		||||
        JButton archiveAllButton = new JButton("Archive All");
 | 
			
		||||
        archiveAllButton.addActionListener(new ArchiveAllListener(this.executor, this));
 | 
			
		||||
        commonActionsPanel.add(archiveAllButton);
 | 
			
		||||
        commonActionsPanel.add(this.generateButtonPanel("Archive All", new ArchiveAllListener(this.executor, this)));
 | 
			
		||||
        commonActionsPanel.add(this.generateButtonPanel("Read Students File", new ReadStudentsFileListener(this.executor, this)));
 | 
			
		||||
        commonActionsPanel.add(this.generateButtonPanel("Generate Assignments Repo", new GenerateAssignmentsRepoListener(this.executor, this)));
 | 
			
		||||
 | 
			
		||||
        JButton generateStudentTeamsButton = new JButton("Read teams from file");
 | 
			
		||||
        generateStudentTeamsButton.addActionListener(new ReadStudentsFileListener(this.executor, this));
 | 
			
		||||
        commonActionsPanel.add(generateStudentTeamsButton);
 | 
			
		||||
        // TODO: Enable this once the define teams dialog is complete.
 | 
			
		||||
//        JButton defineTaTeamsButton = new JButton("Define TA Teams");
 | 
			
		||||
//        defineTaTeamsButton.addActionListener(new DefineTaTeamsListener(this.executor, this));
 | 
			
		||||
//        commonActionsPanel.add(f);
 | 
			
		||||
 | 
			
		||||
        JButton generateAssignmentsRepoButton = new JButton("Generate Assignments Repo");
 | 
			
		||||
        generateAssignmentsRepoButton.addActionListener(new GenerateAssignmentsRepoListener(this.executor, this));
 | 
			
		||||
        commonActionsPanel.add(generateAssignmentsRepoButton);
 | 
			
		||||
        commonActionsPanel.add(this.generateButtonPanel("Delete Repos", new DeleteReposListener(this.executor, this)));
 | 
			
		||||
 | 
			
		||||
        JButton defineTaTeamsButton = new JButton("Define TA Teams");
 | 
			
		||||
        defineTaTeamsButton.addActionListener(new DefineTaTeamsListener(this.executor, this));
 | 
			
		||||
        commonActionsPanel.add(defineTaTeamsButton);
 | 
			
		||||
        // Extra panel to push buttons to the top.
 | 
			
		||||
        JPanel buttonAlignmentPanel = new JPanel(new BorderLayout());
 | 
			
		||||
        buttonAlignmentPanel.add(commonActionsPanel, BorderLayout.NORTH);
 | 
			
		||||
 | 
			
		||||
        githubManagerPanel.add(commonActionsPanel, BorderLayout.CENTER);
 | 
			
		||||
        githubManagerPanel.add(buttonAlignmentPanel, BorderLayout.CENTER);
 | 
			
		||||
 | 
			
		||||
        return githubManagerPanel;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -190,6 +190,20 @@ public class InitializerApp extends JFrame {
 | 
			
		|||
        return newPanel;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generates a button with an attached action listener.
 | 
			
		||||
     * @param buttonText The text to display on the button.
 | 
			
		||||
     * @param listener The listener to attach to the button.
 | 
			
		||||
     * @return A BorderLayout JPanel which contains the button in the CENTER location.
 | 
			
		||||
     */
 | 
			
		||||
    private JPanel generateButtonPanel(String buttonText, ActionListener listener) {
 | 
			
		||||
        JPanel panel = new JPanel(new BorderLayout());
 | 
			
		||||
        JButton button = new JButton(buttonText);
 | 
			
		||||
        button.addActionListener(listener);
 | 
			
		||||
        panel.add(button, BorderLayout.CENTER);
 | 
			
		||||
        return panel;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the organization name entered in the relevant field.
 | 
			
		||||
     * @return The organization name the user has entered.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue