use of org.phoenicis.repository.location.RepositoryLocation in project POL-POM-5 by PhoenicisOrg.
the class DragableRepositoryListCell method changed.
@Override
public void changed(ObservableValue<? extends Number> observableValue, Number oldValue, Number newValue) {
setOnDragDetected(event -> {
if (getItem() == null) {
return;
}
Dragboard dragboard = startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
content.putString(Integer.toString(getIndex()));
dragboard.setContent(content);
event.consume();
});
setOnDragOver(event -> {
event.acceptTransferModes(TransferMode.MOVE);
event.consume();
});
setOnDragEntered(event -> {
setOpacity(0.3);
});
setOnDragExited(event -> {
setOpacity(1);
});
setOnDragDropped(event -> {
if (getItem() == null) {
return;
}
Dragboard db = event.getDragboard();
boolean success = false;
if (db.hasString()) {
ObservableList<RepositoryLocation<? extends Repository>> items = getListView().getItems();
int draggedIdx = Integer.parseInt(db.getString());
int thisIdx = items.indexOf(getItem());
RepositoryLocation<? extends Repository> draggedItem = items.get(draggedIdx);
items.set(draggedIdx, getItem());
items.set(thisIdx, draggedItem);
List<RepositoryLocation<? extends Repository>> itemscopy = new ArrayList<>(getListView().getItems());
getListView().getItems().setAll(itemscopy);
success = true;
}
event.setDropCompleted(success);
event.consume();
});
setOnDragDone(event -> {
onDragDone.accept(getItem(), newValue);
event.consume();
});
}
use of org.phoenicis.repository.location.RepositoryLocation in project POL-POM-5 by PhoenicisOrg.
the class DragableRepositoryListCell method updateItem.
@Override
protected void updateItem(RepositoryLocation<? extends Repository> item, boolean empty) {
super.updateItem(item, empty);
if (!empty) {
ObservableList<RepositoryLocation<? extends Repository>> repositories = getListView().getItems();
GridPane itemPane = new GridPane();
Label indexLabel = new Label(String.valueOf(repositories.size() - repositories.indexOf(item)));
indexLabel.setPrefWidth(50);
Label repositoryLocationLabel = new Label(item.toDisplayString());
itemPane.add(indexLabel, 0, 0);
itemPane.add(repositoryLocationLabel, 1, 0);
setGraphic(itemPane);
} else {
setGraphic(null);
}
}
use of org.phoenicis.repository.location.RepositoryLocation in project phoenicis by PhoenicisOrg.
the class DragableRepositoryListCell method updateItem.
@Override
protected void updateItem(RepositoryLocation<? extends Repository> item, boolean empty) {
super.updateItem(item, empty);
if (!empty) {
ObservableList<RepositoryLocation<? extends Repository>> repositories = getListView().getItems();
GridPane itemPane = new GridPane();
Label indexLabel = new Label(String.valueOf(repositories.size() - repositories.indexOf(item)));
indexLabel.setPrefWidth(50);
Label repositoryLocationLabel = new Label(item.toDisplayString());
itemPane.add(indexLabel, 0, 0);
itemPane.add(repositoryLocationLabel, 1, 0);
setGraphic(itemPane);
} else {
setGraphic(null);
}
}
use of org.phoenicis.repository.location.RepositoryLocation in project phoenicis 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 {
try {
result.add(new GitRepositoryLocation.Builder().withGitRepositoryUri(new URL("https://github.com/PhoenicisOrg/scripts").toURI()).withBranch("master").build());
result.add(new ClasspathRepositoryLocation("/org/phoenicis/repository"));
} catch (URISyntaxException | MalformedURLException e) {
LOGGER.error("Couldn't create default repository location list", e);
}
}
return result;
}
use of org.phoenicis.repository.location.RepositoryLocation in project POL-POM-5 by PlayOnLinux.
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;
}
Aggregations