Skip to content
Snippets Groups Projects
Commit 6dc6e46f authored by Andreas Bayha's avatar Andreas Bayha
Browse files

Merge branch '4254' into 'master'

4254

See merge request !182
parents 39425a97 1184c2d2
No related branches found
No related tags found
1 merge request!1824254
DynamicList.java 786300e2e914826da239329d190abea1710478ea GREEN
DynamicListContentProvider.java 817cba44f246a361207a88ef9a4e1869215803f7 GREEN
DynamicStreamContentProvider.java f46e91400609cba54793dd240be0fe2aa0d5cced GREEN
DynamicTextFieldTreeTableCell.java de24117e6f785b328f1ff62383626a0b4b54e8ff GREEN
DynamicTextFieldTreeTableCell.java 62fa0c08b11d87e0eed41f84be85505c2740e75d GREEN
DynamicTreeContentProviderBase.java 91896b1fb5104d126544c44c1ff8c30f2a13a8d6 GREEN
DynamicTreeItem.java 7e81ea98038b5eca90df583e0268d4e8f37aaf25 GREEN
DynamicTreeItemBase.java d883066ecc181120302ca32f328538de7a45b093 GREEN
DynamicTreeTableUIProviderBase.java 25592d4d2fb4a6cf904e8bdd98fc5138cbea5f17 GREEN
DynamicTreeTableUIProviderBase.java 29aa753793ab90676d45e5b76b11f7b46ce02a97 GREEN
DynamicTreeTableViewer.java 77e9995a3bee37d57578dad9434a53c702128efa YELLOW
DynamicTreeUIProviderBase.java 82d3c051213f0147f4c67ad247a08696cee73110 GREEN
DynamicTreeViewer.java 33066062a82101cf28410e4d04f85bb9c24251db GREEN
......
......@@ -42,11 +42,21 @@ public class DynamicTextFieldTreeTableCell<T> extends TextFieldTreeTableCell<T,
/** The current entered text in the TextField. */
private String currentInput = "";
/** The UIProvider of the editor in which this cell is embedded in. */
DynamicTreeTableUIProviderBase<T> uiProvider;
/** The column index, this cell is embedded in. */
int columnIndex;
/**
* Constructor.
*/
public DynamicTextFieldTreeTableCell() {
public DynamicTextFieldTreeTableCell(DynamicTreeTableUIProviderBase<T> uiProvider,
int columnIndex) {
this(new DefaultStringConverter());
this.uiProvider = uiProvider;
this.columnIndex = columnIndex;
}
/**
......@@ -103,19 +113,28 @@ public class DynamicTextFieldTreeTableCell<T> extends TextFieldTreeTableCell<T,
// Remember currently edited element.
currentlyEditedElement = currentEntry;
String initialEditorContent =
uiProvider.getInitialEditorContent(currentlyEditedElement, columnIndex);
// Reset currentInput buffer for the new element.
currentInput = "";
currentInput = initialEditorContent;
// We keep the current input in the buffer variable currentInput to be able to
// use it during unintended cancel options. See cancelEdit().
TextField textField = (TextField)getGraphic();
if(textField != null) {
textField.setOnKeyReleased(event -> {
currentInput = textField.getText();
});
textField.setText(initialEditorContent);
}
} else {
// Reset buffer
currentlyEditedElement = null;
}
// We keep the current input in the buffer variable currentInput to be able to
// use it during unintended cancel options. See cancelEdit().
TextField textField = (TextField)getGraphic();
if(textField != null) {
textField.setOnKeyReleased(event -> {
currentInput = textField.getText();
});
currentInput = null;
}
}
......@@ -133,10 +152,16 @@ public class DynamicTextFieldTreeTableCell<T> extends TextFieldTreeTableCell<T,
// Set the current TextField value if intended.
if(currentlyEditedElement != null) {
setValueOnLeavingCell(currentlyEditedElement, currentInput);
String initialEditorContent =
uiProvider.getInitialEditorContent(currentlyEditedElement, columnIndex);
if(!currentInput.equals(initialEditorContent)) {
setValueOnLeavingCell(currentlyEditedElement, currentInput);
}
currentlyEditedElement = null;
}
}
getTreeTableView().refresh();
}
/** {@inheritDoc} */
......
......@@ -64,6 +64,19 @@ public abstract class DynamicTreeTableUIProviderBase<T> {
return "";
}
/**
* Determines, which {@link String} is in text editor cells when stating to edit.
*
* @param element
* The element for which eitr content shall be provided
* @param column
* The column index for which the content shall be provided
* @return The {@link String} which shal be displayed in the editor.
*/
public String getInitialEditorContent(T element, int column) {
return getLabel(element, column);
}
/**
* @param element
* the element to be displayed in the current row
......@@ -534,27 +547,29 @@ public abstract class DynamicTreeTableUIProviderBase<T> {
*/
public void applyToTextColumn(int columnIndex, TreeTableColumn<T, String> column) {
column.setCellFactory(ttColumn -> {
DynamicTextFieldTreeTableCell<T> cell = new DynamicTextFieldTreeTableCell<T>() {
DynamicTextFieldTreeTableCell<T> cell =
new DynamicTextFieldTreeTableCell<T>(this, columnIndex) {
/** {@inheritDoc} */
@Override
protected boolean canEdit(T element) {
return DynamicTreeTableUIProviderBase.this.isEditable(columnIndex, element);
}
/** {@inheritDoc} */
@Override
protected boolean canEdit(T element) {
return DynamicTreeTableUIProviderBase.this.isEditable(columnIndex,
element);
}
/** {@inheritDoc} */
@Override
protected void setValueOnLeavingCell(T element, String currentValue) {
updateValue(element, columnIndex, currentValue);
}
/** {@inheritDoc} */
@Override
protected void setValueOnLeavingCell(T element, String currentValue) {
updateValue(element, columnIndex, currentValue);
}
/** {@inheritDoc} */
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
styleCell(this, columnIndex);
}
};
/** {@inheritDoc} */
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
styleCell(this, columnIndex);
}
};
styleCell(cell, columnIndex);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment