use of javafx.collections.ObservableList in project Gargoyle by callakrsos.
the class DockNode method setFloating.
/**
* Whether the node is currently floating.
*
* @param floating Whether the node is currently floating.
* @param translation null The offset of the node after being set floating. Used for aligning it
* with its layout bounds inside the dock pane when it becomes detached. Can be null
* indicating no translation.
*
*
* tansalation param value is value set (screenX,screenY)
*/
public void setFloating(boolean floating, Point2D translation) {
if (floating && !this.isFloating()) {
// position the new stage relative to the old scene offset
Point2D floatScene = this.localToScene(0, 0);
Point2D floatScreen = this.localToScreen(0, 0);
// setup window stage
dockTitleBar.setVisible(this.isCustomTitleBar());
dockTitleBar.setManaged(this.isCustomTitleBar());
if (this.isDocked()) {
this.undock();
}
stage = new Stage();
stage.initStyle(stageStyle);
stage.titleProperty().bind(titleProperty);
if (dockPane != null && dockPane.getScene() != null && dockPane.getScene().getWindow() != null) {
stage.initOwner(dockPane.getScene().getWindow());
}
if (null == stage.getOwner() && null != this.owner)
stage.initOwner(this.owner);
/* append close handler. 2017-05-29 by kyj.*/
EventHandler<WindowEvent> closeHandler = ev -> {
try {
ObservableList<Node> childrenUnmodifiable = null;
if (dockPane != null)
dockPane.getChildrenUnmodifiable();
else
childrenUnmodifiable = FXCollections.observableArrayList(getContents());
Consumer<Closeable> clo = n -> {
try {
n.close();
} catch (Exception e) {
e.printStackTrace();
}
};
childrenUnmodifiable.stream().filter(n -> n instanceof Closeable).map(n -> (Closeable) n).forEach(clo);
} catch (Exception e) {
e.printStackTrace();
}
};
// stage.setOnCloseRequest(value);
stage.addEventHandler(WindowEvent.WINDOW_CLOSE_REQUEST, closeHandler);
// offset the new stage to cover exactly the area the dock was local to the scene
// this is useful for when the user presses the + sign and we have no information
// on where the mouse was clicked
// the border pane allows the dock node to
// have a drop shadow effect on the border
// but also maintain the layout of contents
// such as a tab that has no content
borderPane = new BorderPane();
borderPane.getStyleClass().add("dock-node-border");
borderPane.setCenter(this);
borderPane.applyCss();
Scene scene = new Scene(borderPane);
scene.getStylesheets().add(SkinManager.getInstance().getSkin());
// apply the floating property so we can get its padding size
// while it is floating to offset it by the drop shadow
// this way it pops out above exactly where it was when docked
this.floatingProperty.set(floating);
this.applyCss();
/*
* 2016-10-26 apply default value by kyj
* tanslation param value is empty , i call api that stage will be located center
*/
if (translation != null) {
Point2D stagePosition = new Point2D(0, 0);
if (this.isDecorated()) {
Window owner = this.owner;
if (null != owner)
stagePosition = floatScene.add(new Point2D(owner.getX(), owner.getY()));
else
stagePosition = floatScene.add(new Point2D(0, 0));
} else {
if (floatScreen != null)
stagePosition = floatScreen;
}
if (translation != null) {
stagePosition = stagePosition.add(translation);
}
// Insets insetsDelta = borderPane.getInsets();
stage.setX(/*stagePosition.getX() - insetsDelta.getLeft()*/
translation.getX());
stage.setY(/*stagePosition.getY() - insetsDelta.getTop()*/
translation.getY());
} else
stage.centerOnScreen();
if (stageStyle == StageStyle.TRANSPARENT) {
scene.setFill(null);
}
stage.setResizable(this.isStageResizable());
if (this.isStageResizable()) {
stage.addEventFilter(MouseEvent.MOUSE_PRESSED, this);
stage.addEventFilter(MouseEvent.MOUSE_MOVED, this);
stage.addEventFilter(MouseEvent.MOUSE_DRAGGED, this);
}
// we want to set the client area size
// without this it subtracts the native border sizes from the scene
// size
stage.sizeToScene();
stage.setScene(scene);
stage.show();
} else if (!floating && this.isFloating()) {
this.floatingProperty.set(floating);
stage.removeEventFilter(MouseEvent.MOUSE_PRESSED, this);
stage.removeEventFilter(MouseEvent.MOUSE_MOVED, this);
stage.removeEventFilter(MouseEvent.MOUSE_DRAGGED, this);
stage.close();
}
}
use of javafx.collections.ObservableList in project Gargoyle by callakrsos.
the class FxUtil method exportExcelFile.
/**
* tableView의 item을 엑셀파일로 전환
* @작성자 : KYJ
* @작성일 : 2017. 3. 31.
* @param saveFile
* @param tableView
*/
public static void exportExcelFile(File saveFile, TableView<?> tableView) {
List<Map<String, Object>> items = tableView.getItems().stream().map(v -> {
if (v instanceof Map) {
return (Map<String, Object>) v;
}
return (Map<String, Object>) ObjectUtil.toMap(v);
}).collect(Collectors.toList());
// ObservableList<Map<String, Object>> items = this.tbResult.getItems();
ToExcelFileFunction toExcelFileFunction = new ToExcelFileFunction();
List<String> columns = tableView.getColumns().stream().map(col -> col.getText()).collect(Collectors.toList());
toExcelFileFunction.generate0(saveFile, columns, items);
DialogUtil.showMessageDialog("complete...");
}
use of javafx.collections.ObservableList in project Gargoyle by callakrsos.
the class FxTableViewUtil method installCopyHandler.
@SuppressWarnings("rawtypes")
public static void installCopyHandler(TableView<?> table) {
table.addEventHandler(KeyEvent.KEY_PRESSED, e -> {
if (e.isConsumed())
return;
int type = -1;
if (e.isControlDown() && e.getCode() == KeyCode.C) {
if (e.isShiftDown()) {
type = 2;
} else {
type = 1;
}
}
if (type == -1)
return;
TableViewSelectionModel<?> selectionModel = table.getSelectionModel();
SelectionMode selectionMode = selectionModel.getSelectionMode();
boolean cellSelectionEnabled = selectionModel.isCellSelectionEnabled();
if (!cellSelectionEnabled) {
Object selectedItem = table.getSelectionModel().getSelectedItem();
ObservableList<?> columns = table.getColumns();
Optional<String> reduce = columns.stream().filter(ob -> ob instanceof TableColumn).map(obj -> (TableColumn) obj).map(tc -> tc.getCellData(selectedItem)).filter(v -> v != null).map(v -> v.toString()).reduce((o1, o2) -> o1.toString().concat("\t").concat(o2.toString()));
reduce.ifPresent(str -> {
FxClipboardUtil.putString(str);
e.consume();
});
} else if (cellSelectionEnabled) {
ObservableList<TablePosition> selectedCells = selectionModel.getSelectedCells();
TablePosition tablePosition = selectedCells.get(0);
TableColumn tableColumn = tablePosition.getTableColumn();
int row = tablePosition.getRow();
int col = table.getColumns().indexOf(tableColumn);
switch(type) {
case 1:
StringBuilder sb = new StringBuilder();
for (TablePosition cell : selectedCells) {
if (row != cell.getRow()) {
sb.append("\n");
row++;
} else if (col != table.getColumns().indexOf(cell.getTableColumn())) {
sb.append("\t");
}
Object cellData = cell.getTableColumn().getCellData(cell.getRow());
sb.append(ValueUtil.decode(cellData, cellData, "").toString());
}
FxClipboardUtil.putString(sb.toString());
e.consume();
break;
case 2:
Object cellData = tableColumn.getCellData(row);
FxClipboardUtil.putString(ValueUtil.decode(cellData, cellData, "").toString());
e.consume();
break;
}
}
});
}
use of javafx.collections.ObservableList in project Gargoyle by callakrsos.
the class ProjectFileTreeItemCreator method buildChildren.
private ObservableList<TreeItem<FileWrapper>> buildChildren(TreeItem<FileWrapper> treeItem, FILE_TREE_TYPE type) {
FileWrapper f = treeItem.getValue();
boolean isParentSvnConnected = f.isSVNConnected();
File parentWcDbFile = f.getWcDbFile();
if (f == null) {
return FXCollections.emptyObservableList();
}
if (f.isFile()) {
return FXCollections.emptyObservableList();
}
File[] files = f.listFiles();
if (files != null) {
ObservableList<TreeItem<FileWrapper>> children = FXCollections.observableArrayList();
switch(type) {
case NOMAL:
for (File childFile : files) {
TreeItem<FileWrapper> createNode = createDefaultNode(createFileWrapper(childFile));
children.add(createNode);
}
break;
case JAVA_PROJECT:
for (File childFile : files) {
TreeItem<FileWrapper> createNode = createJavaProjectMemberNode(createFileWrapper(childFile, fw -> {
fw.setWcDbFile(parentWcDbFile);
fw.setSVNConnected(isParentSvnConnected);
}));
children.add(createNode);
}
break;
case JAVA_PROJECT_MEMBER:
for (File childFile : files) {
TreeItem<FileWrapper> createNode = createJavaProjectMemberNode(createFileWrapper(childFile, fw -> {
fw.setWcDbFile(parentWcDbFile);
fw.setSVNConnected(isParentSvnConnected);
}));
children.add(createNode);
}
break;
}
return children;
}
return FXCollections.emptyObservableList();
}
use of javafx.collections.ObservableList in project on-track by michaelplazek.
the class MainMenuController method initializeTrackControllers.
/**
* This function sets the lines to the initial line values.
*/
private void initializeTrackControllers() {
ObservableList<String> lineList = FXCollections.observableArrayList();
// ObservableList[] ctrlrLists = FXCollections.observableArrayList()[];
HashMap<String, ObservableList> ctrlrLists = new HashMap<>();
lineList.add("Select Line");
for (TrackControllerLineManager lm : TrackControllerLineManager.getLines()) {
lineList.add(lm.getLine());
ObservableList<String> currLineList = FXCollections.observableArrayList();
currLineList.addAll(lm.getObservableListOfIds());
ctrlrLists.put(lm.getLine(), currLineList);
}
trackControllerLineChoiceBox.setItems(lineList);
trackControllerLineChoiceBox.setValue("Select Line");
// Disable invalid operations
trackControllerIdChoiceBox.setDisable(true);
trackControllerButton.setDisable(true);
// Action Event for line selection
trackControllerLineChoiceBox.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) -> {
if (!(trackControllerLineChoiceBox.getSelectionModel().getSelectedItem().equals("Select Line"))) {
// Line Selected, select Id, get proper list
trackControllerIdChoiceBox.setItems(ctrlrLists.get(newValue));
trackControllerIdChoiceBox.setValue((String) ctrlrLists.get(newValue).get(0));
trackControllerIdChoiceBox.setDisable(false);
} else {
trackControllerLineChoiceBox.setValue(oldValue);
}
});
// Action Event for id selection
trackControllerIdChoiceBox.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) -> {
if (!(trackControllerIdChoiceBox.getSelectionModel().getSelectedItem().equals("Select ID"))) {
// Line Selected, Id selected, enable button
trackControllerButton.setDisable(false);
}
});
}
Aggregations