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.TransactionTabSelectedEvent;
import com.sparrowwallet.sparrow.transaction.TransactionController;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
@ -26,9 +29,7 @@ import javafx.stage.Stage;
import java.io.*;
import java.net.URL;
import java.text.ParseException;
import java.util.Base64;
import java.util.Optional;
import java.util.ResourceBundle;
import java.util.*;
public class AppController implements Initializable {
private static final String TRANSACTION_TAB_TYPE = "transaction";
@ -254,6 +255,7 @@ public class AppController implements Initializable {
Tab tab = new Tab(tabName);
TabData tabData = new TabData(TabData.TabType.TRANSACTION);
tab.setUserData(tabData);
tab.setContextMenu(getTabContextMenu(tab));
tab.setClosable(true);
FXMLLoader transactionLoader = new FXMLLoader(getClass().getResource("transaction/transaction.fxml"));
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
public void tabSelected(TabEvent event) {
Tab selectedTab = event.getTab();