package visualizationElements; import java.awt.Graphics; import java.util.Vector; /** * Represents a Stack to visualize. * @author MSchaefer * */ public class Stack extends Table { /** * Creates a new Stack. * @param values The values of the stack. */ public Stack(Vector values){ super(null, values.size(), 1); Object[][] tableArray = createTableArray(values); super.setValues(tableArray); } /** * Creates a new Stack. * @param values The values of the stack. */ public Stack(Object[] values){ super(null, values.length, 1); Object[][] tableArray = new Object[values.length][1]; int i = 0; for(Object o : values){ tableArray[i][0] = o; i++; } super.setValues(tableArray); } @Override public void draw(Graphics g) { numberOfRows = valueTable.length; numberOfColumns = valueTable[0].length; int xpos = START_X_POS; int ypos = START_Y_POS; for(int j = 0; j < numberOfColumns; j++){ xpos = xpos + CELL_WIDTH; ypos = START_Y_POS; for(int i = 0; i < numberOfRows; i++){ ypos = ypos + CELL_HEIGHT; g.drawRect(xpos, ypos, CELL_WIDTH, CELL_HEIGHT); if(valueTable[i][j] != null){ g.drawString(valueTable[numberOfRows-(i+1)][numberOfColumns-(j+1)].toString(), xpos + CELL_HEIGHT, ypos + 15); } } } g.drawLine(START_X_POS + CELL_WIDTH - 3, START_Y_POS, START_X_POS + CELL_WIDTH - 3, ypos + CELL_HEIGHT + 3); g.drawLine(xpos + CELL_WIDTH + 3, START_Y_POS, xpos + CELL_WIDTH + 3, ypos + CELL_HEIGHT + 3); g.drawLine(START_X_POS + CELL_WIDTH - 3, ypos + CELL_HEIGHT + 3, xpos + CELL_WIDTH + 3, ypos + CELL_HEIGHT + 3); g.drawLine(START_X_POS + CELL_WIDTH - 4, START_Y_POS, START_X_POS + CELL_WIDTH - 4, ypos + CELL_HEIGHT + 4); g.drawLine(xpos + CELL_WIDTH + 4, START_Y_POS, xpos + CELL_WIDTH + 4, ypos + CELL_HEIGHT + 4); g.drawLine(START_X_POS + CELL_WIDTH - 4, ypos + CELL_HEIGHT + 4, xpos + CELL_WIDTH + 4, ypos + CELL_HEIGHT + 4); } /** * Creates the array to visualize as stack out from the vector. * @param values Vector to convert. * @return Array with values to visualizes as list. */ private Object[][] createTableArray(Vector values) { Object[][] tableArray = new Object[values.size()][1]; for (int i = 0; i