public Interface(final ArrayList<Book> selectedBooks, GridWindow currentWindow) {
		repository = selectedBooks;
		visualizationLevel = 2;
		selectedChapters = new ArrayList<>();
		for(int i = 0;i < repository.size();i++){
			selectedChapters.add(new ArrayList<Integer>());
		}
		tileBarPanels = new ArrayList<>();
		tileBarViews = new ArrayList<>();
		magnifyRevertButtons = new ArrayList<>();
		generateGraphButtons = new ArrayList<>();
		keepTrackIfMagnifyRevertWasAlreadyPressed = new ArrayList<>();
		forceDirectedNetwork = new JPanel();
		theFrame = currentWindow;
		redQueryList = new ArrayList<>();
		greenQueryList = new ArrayList<>();
		blueQueryList = new ArrayList<>();
		redQueryStrings = new ArrayList<>();
		greenQueryStrings = new ArrayList<>();
		blueQueryStrings = new ArrayList<>();
		for(int j = 0;j < repository.size();j++){
			redQueryList.add(new ArrayList<Term>());
			greenQueryList.add(new ArrayList<Term>());
			blueQueryList.add(new ArrayList<Term>());
			redQueryStrings.add(new ArrayList<String>());
			greenQueryStrings.add(new ArrayList<String>());
			blueQueryStrings.add(new ArrayList<String>());
		}
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(0, 0, 1600, 800);
		transitionForwardToSecondLevel();
		
		//Scroll pane for text information from the tilebars
		tileBarTextPane = new JScrollPane();
		tileBarTextPane.setBounds(0, 0, ACTUAL_WINDOW_WIDTH-300, ACTUAL_WINDOW_HEIGHT);
		tileBarTextPane.setBorder(new MatteBorder(1,0,1,1,Color.BLACK));
		
		//Scroll pane for text information from the graph.
		graphTextPane = new JScrollPane();
		graphTextPane.setBounds(0, 0, ACTUAL_WINDOW_WIDTH-300, ACTUAL_WINDOW_HEIGHT);
		graphTextPane.setBorder(new MatteBorder(1,0,1,1,Color.BLACK));
		
		// The actual text contents for the info pane.
		displayTextTileBar = new JTextPane()
		{
		    public boolean getScrollableTracksViewportWidth()
		    {
		        return getUI().getPreferredSize(contentPane).width 
		            <= getParent().getSize().width;
		    }
		};
		displayTextTileBar.setEditable(false);
		tileBarTextPane.setViewportView(displayTextTileBar);
		
		
		displayTextGraph = new JTextPane()
		{
		    public boolean getScrollableTracksViewportWidth()
		    {
		        return getUI().getPreferredSize(contentPane).width 
		            <= getParent().getSize().width;
		    }
		};
		displayTextGraph.setEditable(false);
		graphTextPane.setViewportView(displayTextGraph);
		/*
		JPanel divider = new JPanel();
		divider.setBackground(Color.BLACK);
		divider.setBounds(0, 43, 1600, 1);
		contentPane.add(divider);
		*/
		theFrame.setVisible(true);
	}