select existing tab on same file

This commit is contained in:
Craig Raw 2020-04-12 18:56:58 +02:00
parent 3d04ce4686
commit 001da5c534
2 changed files with 53 additions and 3 deletions

View file

@ -81,8 +81,8 @@ public class AppController implements Initializable {
tabs.getSelectionModel().selectedItemProperty().addListener((observable, old_val, selectedTab) -> { tabs.getSelectionModel().selectedItemProperty().addListener((observable, old_val, selectedTab) -> {
if(selectedTab != null) { if(selectedTab != null) {
String tabType = (String)selectedTab.getUserData(); TabData tabData = (TabData)selectedTab.getUserData();
if(tabType.equals(TRANSACTION_TAB_TYPE)) { if(tabData.getType() == TabData.TabType.TRANSACTION) {
EventManager.get().post(new TransactionTabSelectedEvent(selectedTab)); EventManager.get().post(new TransactionTabSelectedEvent(selectedTab));
} }
} }
@ -109,6 +109,14 @@ public class AppController implements Initializable {
} }
private void openFile(File file) { private void openFile(File file) {
for(Tab tab : tabs.getTabs()) {
TabData tabData = (TabData)tab.getUserData();
if(file.equals(tabData.getFile())) {
tabs.getSelectionModel().select(tab);
return;
}
}
if(file.exists()) { if(file.exists()) {
try { try {
byte[] bytes = new byte[(int)file.length()]; byte[] bytes = new byte[(int)file.length()];
@ -119,6 +127,8 @@ public class AppController implements Initializable {
try { try {
Tab tab = addTransactionTab(name, bytes); Tab tab = addTransactionTab(name, bytes);
TabData tabData = (TabData)tab.getUserData();
tabData.setFile(file);
tabs.getSelectionModel().select(tab); tabs.getSelectionModel().select(tab);
} catch(ParseException e) { } catch(ParseException e) {
ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
@ -153,6 +163,8 @@ public class AppController implements Initializable {
if(text.isPresent() && !text.get().isEmpty()) { if(text.isPresent() && !text.get().isEmpty()) {
try { try {
Tab tab = addTransactionTab(null, text.get().trim()); Tab tab = addTransactionTab(null, text.get().trim());
TabData tabData = (TabData)tab.getUserData();
tabData.setText(text.get());
tabs.getSelectionModel().select(tab); tabs.getSelectionModel().select(tab);
} catch(PSBTParseException e) { } catch(PSBTParseException e) {
showErrorDialog("Invalid PSBT", e.getMessage()); showErrorDialog("Invalid PSBT", e.getMessage());
@ -240,7 +252,8 @@ public class AppController implements Initializable {
} }
Tab tab = new Tab(tabName); Tab tab = new Tab(tabName);
tab.setUserData(TRANSACTION_TAB_TYPE); TabData tabData = new TabData(TabData.TabType.TRANSACTION);
tab.setUserData(tabData);
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());

View file

@ -0,0 +1,37 @@
package com.sparrowwallet.sparrow;
import java.io.File;
public class TabData {
private TabType type;
private File file;
private String text;
public TabData(TabType type) {
this.type = type;
}
public TabType getType() {
return type;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public enum TabType {
TRANSACTION
}
}