package bluej.groupwork.ui;

import bluej.Config;
import bluej.pkgmgr.Project;
import bluej.utility.javafx.FXCustomizedDialog;

import java.util.Iterator;
import java.util.List;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.Separator;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.stage.Window;

import threadchecker.OnThread;
import threadchecker.Tag;


| A dialog which presents conflicts after an update. | | @author fisker | @author Amjad Altadmri | @OnThread(Tag.FXPlatform) public class ConflictsDialog extends FXCustomizedDialog<Void>{ private List<String> bluejConflicts; private List<String> nonBluejConflicts; private Project project;
| Constructor for ConflictsDialog. | | @param project the project in which the conflicts occurred. | @param bluejConflicts the conflicting files which are managed by BlueJ (*.java, README.txt) | @param nonBlueJConflicts other conflicting files | public ConflictsDialog(Project project, Window owner, List<String> bluejConflicts, List<String> nonBlueJConflicts) { super(owner, "team.conflicts.title", "team-conflicts"); this.project = project; this.bluejConflicts = bluejConflicts; this.nonBluejConflicts = nonBlueJConflicts; getDialogPane().setContent(makeMainPane()); getDialogPane().getButtonTypes().setAll(ButtonType.CLOSE); if (owner != null) { setLocationRelativeTo(owner); } } private Pane makeMainPane() { VBox mainPanel = new VBox(); if (! bluejConflicts.isEmpty()) { Pane bluejConflictsPanel = makeConflictsPanel( Config.getString("team.conflicts.classes"), bluejConflicts); mainPanel.getChildren().add(bluejConflictsPanel); } if (! nonBluejConflicts.isEmpty()) { Pane nonBluejConflictsPanel = makeConflictsPanel( Config.getString("team.conflicts.files"), nonBluejConflicts); mainPanel.getChildren().add(nonBluejConflictsPanel); } Button resolveButton = new Button(Config.getString("team.conflicts.show")); resolveButton.setOnAction(event -> { close(); project.openEditorsForSelectedTargets(); }); resolveButton.requestFocus(); resolveButton.setDisable(bluejConflicts.isEmpty()); mainPanel.getChildren().add(resolveButton); return mainPanel; } private Pane makeConflictsPanel(String headline, List<String> conflicts) { VBox labelPanel = new VBox(); labelPanel.setAlignment(Pos.BASELINE_LEFT); VBox conflictsPanel = new VBox(); conflictsPanel.setAlignment(Pos.BASELINE_LEFT); for (Iterator<String> i = conflicts.iterator(); i.hasNext();) { String conflict = i.next(); conflictsPanel.getChildren().add(new Label(conflict)); } ScrollPane scrollPane = new ScrollPane(conflictsPanel); scrollPane.setFitToWidth(true); scrollPane.setFitToHeight(true); labelPanel.getChildren().addAll(new Label(headline), new Separator(Orientation.VERTICAL), scrollPane); return labelPanel; } }

.   ConflictsDialog
.   makeMainPane
.   makeConflictsPanel




113 neLoCode + 7 LoComm