limit the size of the table based on the terminal size

This commit is contained in:
Zlatin Balevsky
2019-10-24 19:12:50 +01:00
parent fce8bbfd97
commit bf72c76f13
7 changed files with 32 additions and 12 deletions

View File

@@ -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()

View File

@@ -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()})

View File

@@ -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()

View File

@@ -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()))
}
}

View File

@@ -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()})

View File

@@ -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)
}
}

View File

@@ -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()})