public void draw(Graphics2D g) {
		if(!visible){return;}
		int w = getWidth();
		int h = getHeight();

		if (showBorder) {
			g.setColor(new Color(0x33ffffff, true));
			g.fillRect(0, 0, w, h);
		}


		w -= MARGIN * 2;
		h -= MARGIN * 2;
		int x = MARGIN;
		int y = MARGIN;

		g.setColor(new Color(0x55ffffff, true));
		g.fillRect(x, y, w, h);





		if (showBorder) {
			g.setColor(Color.WHITE);
			g.setStroke(Palette.STROKE1);
			g.drawRect(x, y, w, h);
			
		}
		
		/*
		 * draw model buttons here
		 */

		for(ModelButton button: modelButtons)
		{
			boolean highlighted = (button.getAction().equals(loadedModel)) ? true : false;
			// the button draw method just draws the image
			button.draw(g, highlighted);
			// so we need to add text too
			// - maybe I should extend Button class to a ModelButton class? 
			g.setFont(new Font(Font.SANS_SERIF, 12, 12));
			// to avoid sub stringing into empty space and get OOBException
			int endChar = 0;
			if(button.getLabel().length() < 13)
			{
				endChar = button.getLabel().length();
			}
			else
			{
				endChar = 13;
			}
			// draw name below image
			g.drawString(button.getLabel().substring(0, endChar), 
					(int)button.getShape().getBounds2D().getX() + 5,  
					(int)button.getShape().getBounds2D().getY() + button.getImage().getHeight() + MARGIN / 2);
			// if this was the last loaded model, then we draw a red rectangle around it
			if(button.getLabel().equals(loadedModel))
			{
				// todo
			}

		}

		

	}