diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/CliLanterna.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/CliLanterna.groovy index 12c119d3..683f0457 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/CliLanterna.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/CliLanterna.groovy @@ -154,7 +154,7 @@ class CliLanterna { System.exit(1) } - window = new MainWindowView("MuWire "+MW_VERSION, core, textGUI) + window = new MainWindowView("MuWire "+MW_VERSION, core, textGUI, screen) core.eventBus.publish(new UILoadedEvent()) textGUI.addWindowAndWait(window) core.shutdown() diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/DownloadsView.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/DownloadsView.groovy index fa3a3180..05062565 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/DownloadsView.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/DownloadsView.groovy @@ -1,5 +1,6 @@ package com.muwire.clilanterna +import com.googlecode.lanterna.TerminalSize import com.googlecode.lanterna.gui2.BasicWindow import com.googlecode.lanterna.gui2.Button import com.googlecode.lanterna.gui2.GridLayout @@ -21,7 +22,7 @@ class DownloadsView extends BasicWindow { private final TextGUI textGUI private final Table table - DownloadsView(Core core, DownloadsModel model, TextGUI textGUI) { + DownloadsView(Core core, DownloadsModel model, TextGUI textGUI, TerminalSize terminalSize) { this.core = core this.model = model this.textGUI = textGUI @@ -34,6 +35,7 @@ class DownloadsView extends BasicWindow { table.setCellSelection(false) table.setSelectAction({rowSelected()}) table.setTableModel(model.model) + table.setSize(terminalSize) contentPanel.addComponent(table, GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)) Button closeButton = new Button("Close",{close()}) diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/FilesView.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/FilesView.groovy index 2b187c11..d15130f0 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/FilesView.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/FilesView.groovy @@ -1,6 +1,7 @@ package com.muwire.clilanterna +import com.googlecode.lanterna.TerminalSize import com.googlecode.lanterna.gui2.BasicWindow import com.googlecode.lanterna.gui2.Button import com.googlecode.lanterna.gui2.GridLayout @@ -23,7 +24,7 @@ class FilesView extends BasicWindow { private final Core core private final Table table - FilesView(FilesModel model, TextGUI textGUI, Core core) { + FilesView(FilesModel model, TextGUI textGUI, Core core, TerminalSize terminalSize) { super("Shared Files") this.model = model this.core = core @@ -39,6 +40,7 @@ class FilesView extends BasicWindow { table.setCellSelection(false) table.setTableModel(model.model) table.setSelectAction({rowSelected()}) + table.setSize(terminalSize) contentPanel.addComponent(table, layoutData) Panel buttonsPanel = new Panel() diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/MainWindowView.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/MainWindowView.groovy index e3b73e4b..ec219c4d 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/MainWindowView.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/MainWindowView.groovy @@ -11,6 +11,7 @@ import com.googlecode.lanterna.gui2.Panel import com.googlecode.lanterna.gui2.Panels import com.googlecode.lanterna.gui2.TextGUI import com.googlecode.lanterna.gui2.Window +import com.googlecode.lanterna.screen.Screen import com.googlecode.lanterna.gui2.TextBox import com.muwire.core.Core @@ -18,6 +19,7 @@ class MainWindowView extends BasicWindow { private final Core core private final TextGUI textGUI + private final Screen screen private final Label connectionCount private final TextBox searchTextBox @@ -26,11 +28,12 @@ class MainWindowView extends BasicWindow { private final UploadsModel uploadsModel private final FilesModel filesModel - public MainWindowView(String title, Core core, TextGUI textGUI) { + public MainWindowView(String title, Core core, TextGUI textGUI, Screen screen) { super(title); this.core = core this.textGUI = textGUI + this.screen = screen downloadsModel = new DownloadsModel(textGUI.getGUIThread(),core) uploadsModel = new UploadsModel(textGUI.getGUIThread(), core) @@ -92,21 +95,27 @@ class MainWindowView extends BasicWindow { connectionCount.setText(String.valueOf(core.connectionManager.connections.size())) } + private TerminalSize sizeForTables() { + TerminalSize full = screen.getTerminalSize() + return new TerminalSize(full.getColumns(), full.getRows() - 10) + } + private void search() { String query = searchTextBox.getText() SearchModel model = new SearchModel(query, core) - textGUI.addWindowAndWait(new SearchView(model,core, textGUI)) + textGUI.addWindowAndWait(new SearchView(model,core, textGUI, sizeForTables())) } + private void download() { - textGUI.addWindowAndWait(new DownloadsView(core, downloadsModel, textGUI)) + textGUI.addWindowAndWait(new DownloadsView(core, downloadsModel, textGUI, sizeForTables())) } private void upload() { - textGUI.addWindowAndWait(new UploadsView(uploadsModel)) + textGUI.addWindowAndWait(new UploadsView(uploadsModel, sizeForTables())) } private void files() { - textGUI.addWindowAndWait(new FilesView(filesModel, textGUI, core)) + textGUI.addWindowAndWait(new FilesView(filesModel, textGUI, core, sizeForTables())) } } diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/ResultsView.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/ResultsView.groovy index 7bc5281d..865ddcb6 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/ResultsView.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/ResultsView.groovy @@ -1,5 +1,6 @@ package com.muwire.clilanterna +import com.googlecode.lanterna.TerminalSize import com.googlecode.lanterna.gui2.BasicWindow import com.googlecode.lanterna.gui2.Button import com.googlecode.lanterna.gui2.GridLayout @@ -23,7 +24,7 @@ class ResultsView extends BasicWindow { private final Core core private final Table table - ResultsView(ResultsModel model, Core core, TextGUI textGUI) { + ResultsView(ResultsModel model, Core core, TextGUI textGUI, TerminalSize terminalSize) { super(model.results.results[0].sender.getHumanReadableName() + " Results") this.model = model this.core = core @@ -38,6 +39,7 @@ class ResultsView extends BasicWindow { table.setCellSelection(false) table.setSelectAction({rowSelected()}) table.setTableModel(model.model) + table.setSize(terminalSize) contentPanel.addComponent(table, GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)) Button closeButton = new Button("Close", {close()}) diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchView.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchView.groovy index 099a7e22..4b74a5bf 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchView.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchView.groovy @@ -1,5 +1,6 @@ package com.muwire.clilanterna +import com.googlecode.lanterna.TerminalSize import com.googlecode.lanterna.gui2.BasicWindow import com.googlecode.lanterna.gui2.Button import com.googlecode.lanterna.gui2.GridLayout @@ -16,8 +17,9 @@ class SearchView extends BasicWindow { private final SearchModel model private final Table table private final TextGUI textGUI + private final TerminalSize terminalSize - SearchView(SearchModel model, Core core, TextGUI textGUI) { + SearchView(SearchModel model, Core core, TextGUI textGUI, TerminalSize terminalSize) { super(model.query) this.core = core this.model = model @@ -32,6 +34,7 @@ class SearchView extends BasicWindow { table.setCellSelection(false) table.setSelectAction({rowSelected()}) table.setTableModel(model.model) + table.setSize(terminalSize) contentPanel.addComponent(table, GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)) Button closeButton = new Button("Close", { @@ -72,7 +75,7 @@ class SearchView extends BasicWindow { private void showResults(String personaName) { def results = model.resultsPerSender.get(personaName) ResultsModel resultsModel = new ResultsModel(results) - ResultsView resultsView = new ResultsView(resultsModel, core, textGUI) + ResultsView resultsView = new ResultsView(resultsModel, core, textGUI, terminalSize) textGUI.addWindowAndWait(resultsView) } } diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/UploadsView.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/UploadsView.groovy index bdfe5c6b..9a065f10 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/UploadsView.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/UploadsView.groovy @@ -1,5 +1,6 @@ package com.muwire.clilanterna +import com.googlecode.lanterna.TerminalSize import com.googlecode.lanterna.gui2.BasicWindow import com.googlecode.lanterna.gui2.Button import com.googlecode.lanterna.gui2.GridLayout @@ -14,7 +15,7 @@ class UploadsView extends BasicWindow { private final UploadsModel model private final Table table - UploadsView(UploadsModel model) { + UploadsView(UploadsModel model, TerminalSize terminalSize) { this.model = model setHints([Window.Hint.EXPANDED]) @@ -26,6 +27,7 @@ class UploadsView extends BasicWindow { table = new Table("Name","Progress","Downloader","Remote Pieces") table.setCellSelection(false) table.setTableModel(model.model) + table.setSize(terminalSize) contentPanel.addComponent(table, layoutData) Button closeButton = new Button("Close",{close()})