package bluej.groupwork.ui;

import bluej.groupwork.TeamSettings;
import bluej.groupwork.TeamSettingsController;
import bluej.utility.DialogManager;
import bluej.utility.javafx.FXCustomizedDialog;
import bluej.utility.javafx.JavaFXUtil;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.stage.Window;

import threadchecker.OnThread;
import threadchecker.Tag;


| A dialog for teamwork settings. | | @author fisker | @author bquig | @author Amjad Altadmri | @OnThread(Tag.FXPlatform) public class TeamSettingsDialog extends FXCustomizedDialog<TeamSettings>{ private TeamSettingsController teamSettingsController; private TeamSettingsPanel teamSettingsPanel; private Button okButton;
| Create a team settings dialog with a reference to the team settings | controller that it manipulates. | public TeamSettingsDialog(Window owner, TeamSettingsController controller) { super(owner, "team.settings.title", "team-settings"); setResizable(false); teamSettingsController = controller; if (teamSettingsController.hasProject()) { setTitle(getTitle() + " - " + teamSettingsController.getProject().getProjectName()); } setHeaderText(null); prepareButtonPane(); teamSettingsPanel = new TeamSettingsPanel(teamSettingsController, this, getDialogPane().getStyleClass()); getDialogPane().setContent(teamSettingsPanel); DialogManager.centreDialog(this); setOnShown(e -> { JavaFXUtil.runAfterCurrent(() -> teamSettingsPanel.doRequestFocus()); }); setResultConverter(bt -> bt == ButtonType.OK ? getSettings() : null); }
| Set up the buttons panel to contain ok and cancel buttons, and associate their actions. | private void prepareButtonPane() { getDialogPane().getButtonTypes().setAll(ButtonType.OK, ButtonType.CANCEL);
| | Write the data from the teamSettingsPanel to the project's team.defs file. | If checkbox in teamSettingsPanel is checked, the data is also stored in bluej.properties | okButton = (Button) getDialogPane().lookupButton(ButtonType.OK); okButton.setOnAction(event -> { TeamSettings settings = teamSettingsPanel.getSettings(); teamSettingsController.updateSettings(settings, teamSettingsPanel.getUseAsDefault()); if (teamSettingsController.hasProject()) { teamSettingsController.writeToProject(); } }); }
| Disable the fields used to specify the repository: | group, prefix, server and protocol. Called when the team settings | dialog is connected to a project already. | public void disableRepositorySettings() { teamSettingsPanel.disableRepositorySettings(); }
| Get the settings specified by the user | public TeamSettings getSettings() { return teamSettingsPanel.getSettings(); } public Button getOkButton() { return okButton; } }

.   TeamSettingsDialog
.   prepareButtonPane
.   disableRepositorySettings
.   getSettings
.   getOkButton




91 neLoCode + 14 LoComm