summaryrefslogtreecommitdiff
path: root/src/swing
diff options
context:
space:
mode:
authorNAME <USER@epfl.ch>2008-04-28 17:56:23 +0000
committerNAME <USER@epfl.ch>2008-04-28 17:56:23 +0000
commit1a9186d389215729e0119fc3ff0493c6e25d67b0 (patch)
tree8ad1215ef6e6de4e6e5a9c34f9bfd018f7eb66d1 /src/swing
parent3009b2c80f6d77352338cf4f54931c83e17acae1 (diff)
downloadscala-1a9186d389215729e0119fc3ff0493c6e25d67b0.tar.gz
scala-1a9186d389215729e0119fc3ff0493c6e25d67b0.tar.bz2
scala-1a9186d389215729e0119fc3ff0493c6e25d67b0.zip
Table constructor with default model revived, t...
Table constructor with default model revived, table change events overhauled
Diffstat (limited to 'src/swing')
-rw-r--r--src/swing/scala/swing/SequentialContainer.scala4
-rw-r--r--src/swing/scala/swing/Table.scala31
-rw-r--r--src/swing/scala/swing/event/TableEvent.scala19
-rw-r--r--src/swing/scala/swing/test/SwingApp.scala4
4 files changed, 41 insertions, 17 deletions
diff --git a/src/swing/scala/swing/SequentialContainer.scala b/src/swing/scala/swing/SequentialContainer.scala
index 0d1270cb72..a9b663c773 100644
--- a/src/swing/scala/swing/SequentialContainer.scala
+++ b/src/swing/scala/swing/SequentialContainer.scala
@@ -5,7 +5,7 @@ import scala.collection.mutable.Buffer
object SequentialContainer {
trait Wrapper extends Component with SequentialContainer with Container.Wrapper {
override val contents: Buffer[Component] = new Content
- def contents_=(c: Component*) { contents.clear(); contents ++= c }
+ //def contents_=(c: Component*) { contents.clear(); contents ++= c }
}
}
@@ -14,5 +14,5 @@ object SequentialContainer {
*/
trait SequentialContainer extends Container {
override def contents: Buffer[Component]
- def contents_=(c: Component*)
+ //def contents_=(c: Component*)
}
diff --git a/src/swing/scala/swing/Table.scala b/src/swing/scala/swing/Table.scala
index 659659fa0a..e2080a5e39 100644
--- a/src/swing/scala/swing/Table.scala
+++ b/src/swing/scala/swing/Table.scala
@@ -43,17 +43,21 @@ class Table extends Component with Scrollable with Publisher {
def this(rowData: Array[Array[Any]], columnNames: Seq[Any]) = {
this()
peer.setModel(new AbstractTableModel {
- override def getColumnName(column: Int) = columnNames(column).toString
- def getRowCount() = rowData.length
- def getColumnCount() = columnNames.length
- def getValueAt(row: Int, col: Int): AnyRef = rowData(row)(col).asInstanceOf[AnyRef]
- override def isCellEditable(row: Int, column: Int) = true
- override def setValueAt(value: Any, row: Int, col: Int) {
- rowData(row)(col) = value
- fireTableCellUpdated(row, col)
- }
- })
- }
+ override def getColumnName(column: Int) = columnNames(column).toString
+ def getRowCount() = rowData.length
+ def getColumnCount() = columnNames.length
+ def getValueAt(row: Int, col: Int): AnyRef = rowData(row)(col).asInstanceOf[AnyRef]
+ override def isCellEditable(row: Int, column: Int) = true
+ override def setValueAt(value: Any, row: Int, col: Int) {
+ rowData(row)(col) = value
+ fireTableCellUpdated(row, col)
+ }
+ })
+ }
+ def this(rows: Int, columns: Int) = {
+ this()
+ peer.setModel(new DefaultTableModel(rows, columns))
+ }
protected def scrollablePeer = peer
@@ -164,6 +168,7 @@ class Table extends Component with Scrollable with Publisher {
}
}
+ // TODO: a public API for setting editors
protected def editor(row: Int, column: Int) =
Table.this.peer.getDefaultEditor(Table.this.peer.getValueAt(row, column).getClass)
@@ -176,8 +181,10 @@ class Table extends Component with Scrollable with Publisher {
def tableChanged(e: TableModelEvent) = publish(
e.getType match {
case TableModelEvent.UPDATE =>
- if (e.getLastRow == Math.MAX_INT)
+ if (e.getFirstRow == 0 && e.getLastRow == Math.MAX_INT && e.getColumn == TableModelEvent.ALL_COLUMNS)
TableChanged(Table.this)
+ else if (e.getFirstRow == TableModelEvent.HEADER_ROW)
+ TableStructureChanged(Table.this)
else
TableUpdated(Table.this, e.getFirstRow to e.getLastRow, e.getColumn)
case TableModelEvent.INSERT =>
diff --git a/src/swing/scala/swing/event/TableEvent.scala b/src/swing/scala/swing/event/TableEvent.scala
index 4d87b353fd..dc9f80a794 100644
--- a/src/swing/scala/swing/event/TableEvent.scala
+++ b/src/swing/scala/swing/event/TableEvent.scala
@@ -4,10 +4,27 @@ abstract class TableEvent(override val source: Table) extends ComponentEvent(sou
abstract class TableChange(override val source: Table) extends TableEvent(source)
+/**
+ * The most general table change. The table might have changed completely,
+ * i.e., comlumns might have been reordered, rows added or removed, etc.
+ * No other event indicates that the structure might have changed.
+ */
+case class TableStructureChanged(override val source: Table) extends TableChange(source)
+/**
+ * The table structure, i.e., the column order, names, and types stay the same,
+ * but anything else might have changed.
+ */
case class TableChanged(override val source: Table) extends TableChange(source)
+/**
+ * The size of the table stays the same, but the given range of rows might
+ * have changed but only in the given column. A value of -1 for the column
+ * denotes all columns.
+ */
case class TableUpdated(override val source: Table, range: Range, column: Int)
extends TableChange(source)
-
+/**
+ * Any change that caused the table to change it's size
+ */
case class TableResized(override val source: Table) extends TableChange(source)
case class TableRowsAdded(override val source: Table, range: Range) extends TableResized(source)
case class TableRowsRemoved(override val source: Table, range: Range) extends TableResized(source)
diff --git a/src/swing/scala/swing/test/SwingApp.scala b/src/swing/scala/swing/test/SwingApp.scala
index d09434b865..328b488b5b 100644
--- a/src/swing/scala/swing/test/SwingApp.scala
+++ b/src/swing/scala/swing/test/SwingApp.scala
@@ -20,8 +20,8 @@ object SwingApp extends SimpleGUIApplication {
object button extends PushButton {
text = "I am a button"
}
- contents = new GridPanel(GridPanel.Adapt,1) {
- contents.append(label, button)
+ contents = new FlowPanel {
+ contents.append(button, label)
border = Border.Empty(5, 5, 5, 5)
}
}