//import processing.opengl.*; //import java.util.Collections; //import java.util.ArrayList; PFont font; PFont bigfont; String[] Series_Data; ArrayList SeriesList = new ArrayList(30000); int numSeries = 0; int graph_start_year = 1760; int graph_end_year = 2010; int graph_span = graph_end_year - graph_start_year; int grid_width = 200; int grid_height = 150; int square_dim = 3; int grid_dim = 4; Series[][] theGrid = new Series[grid_width][grid_height]; Series selectedSeries; int selected_year = 1900; int xmargin = 50; int ymargin = 50; void setup() { colorMode(HSB,255); size(900, 700); background(0); font = loadFont("ArialMT-12.vlw"); bigfont = loadFont("Helvetica-Bold-36.vlw"); Series_Data = loadStrings("Series_ID#Title#Start#End.txt"); numSeries = Series_Data.length; println("loaded "+ numSeries); IngestText(); sortSeries(); //stackSeries(); } void draw(){ background(20); translate(xmargin,ymargin); drawGrid(); labels(); } void drawGrid(){ int grid_row = 0; int grid_col = 0; for (int s=0; s < SeriesList.size(); s++){ Series thisSeries = (Series) SeriesList.get(s); int thisSpan = thisSeries.getSpan(); noStroke(); fill(thisSpan,255,255); rect(grid_col*grid_dim,grid_row*grid_dim, square_dim, square_dim); if (selectedSeries == thisSeries){ noFill(); stroke(0,0,255); rect((grid_col*grid_dim)-1,(grid_row*grid_dim)-1,square_dim+1,square_dim+1); } theGrid[grid_col][grid_row] = thisSeries; if (grid_col < grid_width-1) { grid_col++; } else { grid_col = 0; grid_row++; } } } void labels(){ int ytextpos = 580; int xtextpos =0; textFont(font,12); fill(0,0,255); // if (selectedSeries){ String ID = selectedSeries.ID; text("Series: " +ID, xtextpos,ytextpos); //String ID = selectedSeries.ID; xtextpos += 200; text("Start: " +selectedSeries.StartYear +" End: " + selectedSeries.EndYear, xtextpos,ytextpos); ytextpos += 15; xtextpos = 0; text("Title: " + selectedSeries.Title, xtextpos, ytextpos); // } } void sortSeries(){ java.util.Collections.sort(SeriesList); //Series A = (Series) SeriesList.get(0); //Series Z = (Series) SeriesList.get(SeriesList.size()-1); selectedSeries = (Series) SeriesList.get(0); } void IngestText(){ int backwardscount = 0; for (int s=0; s EndYear) { // backwardscount++; // println(ID); StartYear = EndYear; } Series newSeries = new Series(ID,Title,StartYear,EndYear); SeriesList.add(newSeries); } } void mouseMoved(){ if ((mouseX > xmargin) && (mouseY > ymargin) && (mouseX < xmargin+(grid_dim*grid_width)) && (mouseY < ymargin+(grid_dim*grid_width))){ int selected_row = (mouseY-ymargin)/grid_dim; int selected_col = (mouseX-xmargin)/grid_dim; if (theGrid[selected_col][selected_row] != null) selectedSeries = theGrid[selected_col][selected_row]; } }