tab context menu

This commit is contained in:
Craig Raw 2020-04-12 19:16:54 +02:00
parent 001da5c534
commit 64dca54f3d

View file

@ -12,7 +12,10 @@ import com.sparrowwallet.sparrow.event.TabEvent;
import com.sparrowwallet.sparrow.event.TransactionTabChangedEvent; import com.sparrowwallet.sparrow.event.TransactionTabChangedEvent;
import com.sparrowwallet.sparrow.event.TransactionTabSelectedEvent; import com.sparrowwallet.sparrow.event.TransactionTabSelectedEvent;
import com.sparrowwallet.sparrow.transaction.TransactionController; import com.sparrowwallet.sparrow.transaction.TransactionController;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
@ -26,9 +29,7 @@ import javafx.stage.Stage;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;
import java.text.ParseException; import java.text.ParseException;
import java.util.Base64; import java.util.*;
import java.util.Optional;
import java.util.ResourceBundle;
public class AppController implements Initializable { public class AppController implements Initializable {
private static final String TRANSACTION_TAB_TYPE = "transaction"; private static final String TRANSACTION_TAB_TYPE = "transaction";
@ -254,6 +255,7 @@ public class AppController implements Initializable {
Tab tab = new Tab(tabName); Tab tab = new Tab(tabName);
TabData tabData = new TabData(TabData.TabType.TRANSACTION); TabData tabData = new TabData(TabData.TabType.TRANSACTION);
tab.setUserData(tabData); tab.setUserData(tabData);
tab.setContextMenu(getTabContextMenu(tab));
tab.setClosable(true); tab.setClosable(true);
FXMLLoader transactionLoader = new FXMLLoader(getClass().getResource("transaction/transaction.fxml")); FXMLLoader transactionLoader = new FXMLLoader(getClass().getResource("transaction/transaction.fxml"));
tab.setContent(transactionLoader.load()); tab.setContent(transactionLoader.load());
@ -272,6 +274,30 @@ public class AppController implements Initializable {
} }
} }
private ContextMenu getTabContextMenu(Tab tab) {
ContextMenu contextMenu = new ContextMenu();
MenuItem close = new MenuItem("Close");
close.setOnAction(event -> {
tabs.getTabs().remove(tab);
});
MenuItem closeOthers = new MenuItem("Close Others");
closeOthers.setOnAction(event -> {
List<Tab> otherTabs = new ArrayList<>(tabs.getTabs());
otherTabs.remove(tab);
tabs.getTabs().removeAll(otherTabs);
});
MenuItem closeAll = new MenuItem("Close All");
closeAll.setOnAction(event -> {
tabs.getTabs().removeAll(tabs.getTabs());
});
contextMenu.getItems().addAll(close, closeOthers, closeAll);
return contextMenu;
}
@Subscribe @Subscribe
public void tabSelected(TabEvent event) { public void tabSelected(TabEvent event) {
Tab selectedTab = event.getTab(); Tab selectedTab = event.getTab();