diff --git a/Mage.Client/src/main/java/mage/client/table/MageTable.java b/Mage.Client/src/main/java/mage/client/table/MageTable.java index 844ec2b69e3..f2ed79e19f1 100644 --- a/Mage.Client/src/main/java/mage/client/table/MageTable.java +++ b/Mage.Client/src/main/java/mage/client/table/MageTable.java @@ -6,9 +6,12 @@ import org.apache.log4j.Logger; import javax.swing.*; import javax.swing.table.JTableHeader; import javax.swing.table.TableColumn; +import javax.swing.table.TableModel; import java.awt.event.MouseEvent; /** + * GUI: basic mage table for any data like game tables list, players list, etc + * * @author JayDi85 */ public class MageTable extends JTable { @@ -38,7 +41,12 @@ public class MageTable extends JTable { int modelCol = this.convertColumnIndexToModel(viewCol); String tip = null; if (modelRow != -1 && modelCol != -1) { - tip = this.getModel().getValueAt(modelRow, modelCol).toString(); + TableModel model = this.getModel(); + if (model instanceof TableModelWithTooltip) { + tip = ((TableModelWithTooltip) model).getTooltipAt(modelRow, modelCol); + } else { + tip = model.getValueAt(modelRow, modelCol).toString(); + } } return GUISizeHelper.textToHtmlWithSize(tip, GUISizeHelper.tableFont); } diff --git a/Mage.Client/src/main/java/mage/client/table/TableModelWithTooltip.java b/Mage.Client/src/main/java/mage/client/table/TableModelWithTooltip.java new file mode 100644 index 00000000000..6d1de4b060b --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/table/TableModelWithTooltip.java @@ -0,0 +1,12 @@ +package mage.client.table; + +/** + * GUI: add support of tooltip/hint for table's cells on mouse move (used by MageTable) + * + * @author JayDi85 + */ +public interface TableModelWithTooltip { + + String getTooltipAt(int rowIndex, int columnIndex); + +} diff --git a/Mage.Client/src/main/java/mage/client/table/TablesTableModel.java b/Mage.Client/src/main/java/mage/client/table/TablesTableModel.java index 1348887d813..6fa3fb65690 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesTableModel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesTableModel.java @@ -10,7 +10,7 @@ import javax.swing.table.AbstractTableModel; import java.util.Collection; import java.util.Date; -public class TablesTableModel extends AbstractTableModel { +public class TablesTableModel extends AbstractTableModel implements TableModelWithTooltip { // icons with tostring for tables hints final ImageIcon tourneyIcon = new ImageIcon(getClass().getResource("/tables/tourney_icon.png")) { @@ -132,7 +132,7 @@ public class TablesTableModel extends AbstractTableModel { case 5: return tables[rowIndex].getGameType(); case 6: - return tables[rowIndex].getAdditionalInfo(); + return tables[rowIndex].getAdditionalInfoShort(); case 7: return tables[rowIndex].getTableStateText(); case 8: @@ -190,6 +190,20 @@ public class TablesTableModel extends AbstractTableModel { return ""; } + @Override + public String getTooltipAt(int rowIndex, int columnIndex) { + Object res; + switch (columnIndex) { + case COLUMN_INFO: + res = tables[rowIndex].getAdditionalInfoFull(); + break; + default: + res = this.getValueAt(rowIndex, columnIndex); + break; + } + return res.toString(); + } + @Override public String getColumnName(int columnIndex) { String colName = ""; diff --git a/Mage.Common/src/main/java/mage/view/TableView.java b/Mage.Common/src/main/java/mage/view/TableView.java index 50d82a2e520..7056aa8e9d8 100644 --- a/Mage.Common/src/main/java/mage/view/TableView.java +++ b/Mage.Common/src/main/java/mage/view/TableView.java @@ -30,7 +30,8 @@ public class TableView implements Serializable { private final String deckType; private String tableName; private String controllerName; - private final String additionalInfo; + private final String additionalInfoShort; + private final String additionalInfoFull; private Date createTime; private TableState tableState; private final SkillLevel skillLevel; @@ -133,7 +134,8 @@ public class TableView implements Serializable { if (table.getNumberOfSeats() > 3) { addInfo.append(" Rng: ").append(table.getMatch().getOptions().getRange().toString()); } - this.additionalInfo = addInfo.toString(); + this.additionalInfoShort = addInfo.toString(); + this.additionalInfoFull = addInfo.toString(); // TODO: add tooltip details here this.skillLevel = table.getMatch().getOptions().getSkillLevel(); this.quitRatio = Integer.toString(table.getMatch().getOptions().getQuitRatio()); this.minimumRating = Integer.toString(table.getMatch().getOptions().getMinimumRating()); @@ -213,7 +215,8 @@ public class TableView implements Serializable { break; default: } - this.additionalInfo = infoText.toString(); + this.additionalInfoShort = infoText.toString(); + this.additionalInfoFull = infoText.toString(); // TODO: add tooltip details here this.tableStateText = stateText.toString(); this.deckType = table.getDeckType() + ' ' + table.getTournament().getBoosterInfo(); this.skillLevel = table.getTournament().getOptions().getMatchOptions().getSkillLevel(); @@ -275,8 +278,12 @@ public class TableView implements Serializable { return this.isTournament; } - public String getAdditionalInfo() { - return this.additionalInfo; + public String getAdditionalInfoShort() { + return this.additionalInfoShort; + } + + public String getAdditionalInfoFull() { + return this.additionalInfoFull; } public String getTableStateText() {