use of org.phoenicis.repository.location.RepositoryLocation in project POL-POM-5 by PhoenicisOrg.
the class FilesystemJsonRepositoryLocationLoader method loadRepositoryLocations.
@Override
public List<RepositoryLocation<? extends Repository>> loadRepositoryLocations() {
List<RepositoryLocation<? extends Repository>> result = new ArrayList<>();
File repositoryListFile = new File(repositoryListPath);
if (repositoryListFile.exists()) {
try {
result = this.objectMapper.readValue(new File(repositoryListPath), TypeFactory.defaultInstance().constructParametricType(List.class, RepositoryLocation.class));
} catch (IOException e) {
LOGGER.error("Couldn't load repository location list", e);
}
} else {
result.addAll(getDefaultRepositoryLocations());
}
return result;
}
use of org.phoenicis.repository.location.RepositoryLocation in project POL-POM-5 by PhoenicisOrg.
the class RepositoriesPanelSkin method createRepositoryLocationTable.
/**
* Creates a {@link TableView} containing the {@link RepositoryLocation} objects
*
* @return A {@link TableView} containing the {@link RepositoryLocation} objects
*/
private TableView<RepositoryLocation<? extends Repository>> createRepositoryLocationTable() {
final TableView<RepositoryLocation<? extends Repository>> repositoryLocationTable = new TableView<>();
repositoryLocationTable.getStyleClass().add("repositories-table");
// add the priority column
repositoryLocationTable.getColumns().add(createColumn(tr("Priority"), repositoryLocation -> getControl().getRepositoryLocations().indexOf(repositoryLocation) + 1));
// add the repository name column
repositoryLocationTable.getColumns().add(createColumn(tr("Repository name"), RepositoryLocation::toDisplayString));
repositoryLocationTable.setRowFactory(tv -> {
final TableRow<RepositoryLocation<? extends Repository>> row = new TableRow<>();
row.getStyleClass().add("repository-row");
final Tooltip repositoryLocationTooltip = new Tooltip(tr("Move the repository up or down to change its priority"));
// ensure that the tooltip is only shown for non empty rows
row.emptyProperty().addListener((Observable invalidation) -> {
if (row.isEmpty()) {
Tooltip.uninstall(row, repositoryLocationTooltip);
} else {
Tooltip.install(row, repositoryLocationTooltip);
}
});
row.setOnDragDetected(event -> {
if (!row.isEmpty()) {
final int index = row.getIndex();
final Dragboard dragboard = row.startDragAndDrop(TransferMode.MOVE);
// create a preview image
final RepositoryLocation<? extends Repository> repositoryLocation = getControl().getRepositoryLocations().get(index);
dragboard.setDragView(createPreviewImage(repositoryLocation));
// save the dragged repository index
final ClipboardContent content = new ClipboardContent();
content.put(repositoryLocationFormat, index);
dragboard.setContent(content);
event.consume();
}
});
row.setOnDragOver(event -> {
final Dragboard dragboard = event.getDragboard();
if (dragboard.hasContent(repositoryLocationFormat) && row.getIndex() != (Integer) dragboard.getContent(repositoryLocationFormat)) {
event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
event.consume();
}
});
row.setOnDragDropped(event -> {
final Dragboard dragboard = event.getDragboard();
if (dragboard.hasContent(repositoryLocationFormat)) {
final int draggedIndex = (Integer) dragboard.getContent(repositoryLocationFormat);
final List<RepositoryLocation<? extends Repository>> workingCopy = new ArrayList<>(getControl().getRepositoryLocations());
final RepositoryLocation<? extends Repository> draggedRepositoryLocation = workingCopy.remove(draggedIndex);
final int dropIndex = row.isEmpty() ? workingCopy.size() : row.getIndex();
workingCopy.add(dropIndex, draggedRepositoryLocation);
getControl().getRepositoryLocations().setAll(workingCopy);
event.setDropCompleted(true);
event.consume();
}
});
return row;
});
Bindings.bindContent(repositoryLocationTable.getItems(), getControl().getRepositoryLocations());
return repositoryLocationTable;
}
use of org.phoenicis.repository.location.RepositoryLocation in project POL-POM-5 by PhoenicisOrg.
the class RepositoriesPanelSkin method initialise.
/**
* {@inheritDoc}
*/
@Override
public void initialise() {
final Text title = new Text(tr("Repository Settings"));
title.getStyleClass().add("title");
final TableView<RepositoryLocation<? extends Repository>> repositoryLocationTable = createRepositoryLocationTable();
VBox.setVgrow(repositoryLocationTable, Priority.ALWAYS);
final HBox repositoryButtons = createRepositoryButtons(repositoryLocationTable);
final HBox refreshContainer = createRefreshButtonContainer();
final VBox container = new VBox(title, repositoryLocationTable, repositoryButtons, refreshContainer);
container.getStyleClass().addAll("settings-tab", "repositories-panel");
getChildren().addAll(container);
}
use of org.phoenicis.repository.location.RepositoryLocation in project POL-POM-5 by PhoenicisOrg.
the class RepositoriesPanelSkin method createRepositoryButtons.
/**
* Creates a new container for the repository buttons.
* These buttons consist of:
* - an add button
* - a delete button
* - a restore defaults button
*
* @param repositoryLocationTable The repository location table
* @return A new container for the repository buttons
*/
private HBox createRepositoryButtons(TableView<RepositoryLocation<? extends Repository>> repositoryLocationTable) {
final Button addButton = new Button(tr("Add"));
addButton.getStyleClass().add("repositories-add");
addButton.setOnAction((ActionEvent event) -> {
final AddRepositoryDialog dialog = new AddRepositoryDialog();
dialog.initOwner(getControl().getScene().getWindow());
final Optional<RepositoryLocation<? extends Repository>> successResult = dialog.showAndWait();
successResult.ifPresent(repositoryLocation -> getControl().getRepositoryLocations().add(0, repositoryLocation));
});
final Button removeButton = new Button(tr("Remove"));
removeButton.getStyleClass().add("repositories-remove");
removeButton.setOnAction((ActionEvent event) -> {
final List<RepositoryLocation<? extends Repository>> toRemove = repositoryLocationTable.getSelectionModel().getSelectedItems();
getControl().getRepositoryLocations().removeAll(toRemove);
});
final Button restoreDefault = new Button(tr("Restore defaults"));
restoreDefault.getStyleClass().add("repositories-restore");
restoreDefault.setOnAction(event -> {
final SimpleConfirmDialog dialog = SimpleConfirmDialog.builder().withTitle(tr("Restore default repositories")).withMessage(tr("Are you sure you want to restore the default repositories?")).withYesCallback(() -> Platform.runLater(() -> getControl().getRepositoryLocations().setAll(getControl().getRepositoryLocationLoader().getDefaultRepositoryLocations()))).withOwner(getControl().getScene().getWindow()).withResizable(true).build();
dialog.showAndCallback();
});
final HBox container = new HBox(addButton, removeButton, restoreDefault);
container.getStyleClass().add("repositories-buttons-container");
return container;
}
use of org.phoenicis.repository.location.RepositoryLocation in project POL-POM-5 by PhoenicisOrg.
the class RepositoriesPanel method populateRepositoryGrid.
private void populateRepositoryGrid() {
this.title = new TextWithStyle(tr("Repositories Settings"), "title");
this.repositoryGrid = new GridPane();
this.repositoryGrid.getStyleClass().add("grid");
this.repositoryText = new TextWithStyle(tr("Repository:"), "captionTitle");
this.repositoryLayout = new VBox();
this.repositoryLayout.setSpacing(5);
this.repositoryListView = new ListView<>(repositories);
this.repositoryListView.setPrefHeight(0);
this.repositoryListView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
this.repositoryListView.setEditable(true);
this.repositoryListView.setCellFactory(param -> new DragableRepositoryListCell((repositoryUrl, toIndex) -> {
this.repositoryManager.moveRepository(repositoryUrl, toIndex.intValue());
this.save();
}));
this.repositoryButtonLayout = new HBox();
this.repositoryButtonLayout.setSpacing(5);
this.addButton = new Button();
this.addButton.setText(tr("Add"));
this.addButton.setOnAction((ActionEvent event) -> {
AddRepositoryDialog dialog = new AddRepositoryDialog();
dialog.initOwner(this.getParent().getScene().getWindow());
Optional<RepositoryLocation<? extends Repository>> successResult = dialog.showAndWait();
successResult.ifPresent(repositoryLocation -> {
repositories.add(repositoryLocation);
this.save();
repositoryManager.addRepositories(0, repositoryLocation);
});
});
this.removeButton = new Button();
this.removeButton.setText(tr("Remove"));
this.removeButton.setOnAction((ActionEvent event) -> {
RepositoryLocation<? extends Repository>[] toRemove = repositoryListView.getSelectionModel().getSelectedItems().toArray(new RepositoryLocation[0]);
repositories.removeAll(toRemove);
this.save();
repositoryManager.removeRepositories(toRemove);
});
this.repositoryButtonLayout.getChildren().addAll(addButton, removeButton);
this.repositoryLayout.getChildren().addAll(repositoryListView, repositoryButtonLayout);
VBox.setVgrow(repositoryListView, Priority.ALWAYS);
this.repositoryGrid.add(repositoryText, 0, 0);
this.repositoryGrid.add(repositoryLayout, 1, 0);
GridPane.setHgrow(repositoryLayout, Priority.ALWAYS);
GridPane.setVgrow(repositoryLayout, Priority.ALWAYS);
GridPane.setValignment(repositoryText, VPos.TOP);
}
Aggregations