Skip to content
Snippets Groups Projects
Commit 0e73a0d9 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

Fixed #177 - tag input field with autocomplete

parent 67548e6f
No related branches found
No related tags found
1 merge request!213merge v1_6_0 into master
......@@ -13,7 +13,6 @@ import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry;
import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
import de.deadlocker8.budgetmaster.logic.serverconnection.ServerTagConnection;
import de.deadlocker8.budgetmaster.logic.tag.TagHandler;
import de.deadlocker8.budgetmaster.logic.utils.Colors;
import de.deadlocker8.budgetmaster.logic.utils.Helpers;
import de.deadlocker8.budgetmaster.logic.utils.Strings;
......@@ -259,9 +258,7 @@ public class NewPaymentController extends BaseController implements Styleable
try
{
s = new ServerTagConnection(controller.getSettings());
TagHandler t = new TagHandler();
t.setTags(s.getTags());
TagField tagField = new TagField(s.getAllTagsForPayment((NormalPayment)payment), new TagHandler());
TagField tagField = new TagField(s.getAllTagsForPayment((NormalPayment)payment), s.getTags());
hboxTags.getChildren().add(tagField);
tagField.maxWidthProperty().bind(hboxTags.widthProperty());
HBox.setHgrow(tagField, Priority.ALWAYS);
......@@ -544,6 +541,7 @@ public class NewPaymentController extends BaseController implements Styleable
comboBoxRepeatingDay.setDisable(selected);
labelText3.setDisable(selected);
}
@Override
public void applyStyle()
{
......
......@@ -5,7 +5,6 @@ import java.util.ArrayList;
import org.controlsfx.control.textfield.TextFields;
import de.deadlocker8.budgetmaster.logic.tag.Tag;
import de.deadlocker8.budgetmaster.logic.tag.TagHandler;
import de.deadlocker8.budgetmaster.logic.utils.Colors;
import de.deadlocker8.budgetmaster.logic.utils.Helpers;
import fontAwesome.FontIconType;
......@@ -22,26 +21,46 @@ import tools.ConvertTo;
public class TagField extends FlowPane
{
private ArrayList<Tag> tags;
private TextField textField;
private ArrayList<Tag> allTags;
public TagField(ArrayList<Tag> tags, TagHandler tagHandler)
public TagField(ArrayList<Tag> tags, ArrayList<Tag> allTags)
{
this.tags = tags;
this.allTags = allTags;
this.setVgap(5);
this.setHgap(5);
this.setPadding(new Insets(5));
this.setStyle("-fx-background-color: #FFFFFF; -fx-border-color: #000000; -fx-background-radius: 5px; -fx-border-radius: 5px");
textField = new TextField();
textField.setMaxWidth(Double.MAX_VALUE);
textField.setOnKeyPressed((event)->{
if(event.getCode().equals(KeyCode.ENTER))
refresh(false);
}
private ArrayList<String> getCompletions(ArrayList<Tag> allTags)
{
addTag(textField.getText().trim());
ArrayList<String> newCompletions = new ArrayList<>();
for(Tag currentTag : allTags)
{
boolean isAlreadyInList = false;
for(Tag paymentTag : tags)
{
if(currentTag.getName().equals(paymentTag.getName()))
{
isAlreadyInList = true;
}
}
});
refresh(false);
if(!isAlreadyInList)
{
newCompletions.add(currentTag.getName());
}
}
return newCompletions;
}
public ArrayList<Tag> getTags()
{
return tags;
}
public void addTag(String tagName)
......@@ -55,13 +74,11 @@ public class TagField extends FlowPane
{
if(currentTag.getName().equals(tagName))
{
textField.setText("");
return;
}
}
tags.add(new Tag(-1, tagName));
textField.setText("");
refresh(true);
}
......@@ -80,10 +97,15 @@ public class TagField extends FlowPane
this.getChildren().add(generateTag(currentTag));
}
ArrayList<String> test = new ArrayList<>();
test.add("apfel");
test.add("baum");
TextFields.bindAutoCompletion(textField, test);
TextField textField = new TextField();
textField.setMaxWidth(Double.MAX_VALUE);
textField.setOnKeyPressed((event)->{
if(event.getCode().equals(KeyCode.ENTER))
{
addTag(textField.getText().trim());
}
});
TextFields.bindAutoCompletion(textField, getCompletions(allTags));
this.getChildren().add(textField);
if(requstFocus)
......@@ -97,7 +119,7 @@ public class TagField extends FlowPane
HBox hboxTag = new HBox();
hboxTag.setSpacing(5);
hboxTag.setAlignment(Pos.CENTER_LEFT);
hboxTag.setPadding(new Insets(0, 5, 0, 5));
hboxTag.setPadding(new Insets(0, 3, 0, 7));
hboxTag.setStyle("-fx-background-color: #cccccc; -fx-background-radius: 5px;");
Label labelTagName = new Label(tag.getName());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment