2003-10-08 Arnaud Vandyck <arnaud.vandyck@ulg.ac.be>

* javax/swing/table/AbstractTableModel.java
	(getColumnName): Simplified code much. Thanks to Yannick Boogaerts who
	helped stop pulling my hair on this +1 then -1 tricky thing!

From-SVN: r72228
This commit is contained in:
Arnaud Vandyck 2003-10-08 17:29:52 +02:00 committed by Michael Koch
parent a761195bfd
commit e55f4a3413
2 changed files with 13 additions and 48 deletions

View File

@ -1,3 +1,9 @@
2003-10-08 Arnaud Vandyck <arnaud.vandyck@ulg.ac.be>
* javax/swing/table/AbstractTableModel.java
(getColumnName): Simplified code much. Thanks to Yannick Boogaerts who
helped stop pulling my hair on this +1 then -1 tricky thing!
2003-10-07 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkTextAreaPeer.java (gtkTextGetSize):

View File

@ -77,56 +77,15 @@ public abstract class AbstractTableModel implements TableModel, Serializable
*/
public String getColumnName (int columnIndex)
{
// Ok, this is not the best solution in the world
// and it does produce wrong answers starting 1378
// but it's a start. I sure hope there is a more
// simple algorithm. I started with a base 10 to
// base 26 converter and later found that there
// were so many are exceptions that it has morphed
// into a pile of goop.
// NOTE2: I have a working algorithm which is much
// much simplier and works for all values...I'll
// be adding it soon...
int index = columnIndex + 1;
StringBuffer buffer = new StringBuffer();
int left = columnIndex;
boolean foundFirst = false;
// Process Exponent levels.
for (int index = 6; index >= 0; index--)
{
int base = (int) (Math.pow (26, index));
if (index > 1)
{
base = base + (int) (Math.pow (26, index - 1));
}
if (base <= left)
{
int multiplier = left / base;
if (foundFirst == false
&& index > 0)
{
buffer.append ((char) (multiplier + 64));
}
else
{
buffer.append ((char) (multiplier + 65));
}
left = left - (base * multiplier);
foundFirst = true;
}
else if (foundFirst == true
|| index == 0)
{
buffer.append('A');
}
}
while (index > 0)
{
buffer.insert (0, (char) ('A' + ((index - 1) % 26)));
index = (index - 1) / 26;
}
// Return column name.
return buffer.toString();
}