瀏覽代碼

Legende hinzugefügt

Kolja Strohm 6 年之前
父節點
當前提交
0aa3eaf1dd
共有 2 個文件被更改,包括 76 次插入0 次删除
  1. 70 0
      src/view/LegendView.java
  2. 6 0
      src/view/MainView.java

+ 70 - 0
src/view/LegendView.java

@@ -0,0 +1,70 @@
+package view;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+
+import javax.swing.JPanel;
+
+public class LegendView extends JPanel {
+
+	private static final long serialVersionUID = 1L;
+	private static final int PADDING = 4;
+
+	@Override
+	public void paintComponent( Graphics g ) {
+	
+		g.setFont( RenderHelper.font );
+		FontMetrics fm = g.getFontMetrics();
+		setPreferredSize( new Dimension( getPreferredSize().width, fm.getHeight() + PADDING * 2 ) );
+		
+		int height = fm.getHeight() + PADDING * 2;
+		
+		int x = PADDING;
+		g.drawString( "Legende:", x, fm.getMaxAscent() );
+		x += fm.stringWidth( "Legende:" ) + PADDING;
+		
+		g.setColor( Color.LIGHT_GRAY );
+		g.fillOval( x, PADDING, height - PADDING*2, height - PADDING*2 );
+		x += height;
+		g.setColor( Color.BLACK );
+		g.drawString( "block root", x, fm.getMaxAscent() + PADDING );
+		x += fm.stringWidth( "block root" ) + PADDING * 4;
+		
+		g.setColor( Color.LIGHT_GRAY );
+        ((Graphics2D)g).setStroke(new BasicStroke(2));
+		g.drawRect( x, PADDING, height - PADDING * 2, height - PADDING * 2 );
+		x += height;
+		g.setColor( Color.BLACK );
+		g.drawString( "node with subgraph", x, fm.getMaxAscent() + PADDING );
+		x += fm.stringWidth( "node with subgraph" ) + PADDING * 4;
+		
+		g.setColor( Color.RED );
+		g.drawLine( x, height / 2, x + height - PADDING * 2, height / 2 );
+		x += height;
+		g.setColor( Color.BLACK );
+		g.drawString( "conflicted edge", x, fm.getMaxAscent() + PADDING );
+		x += fm.stringWidth( "conflicted edge" ) + PADDING * 4;
+		
+		g.setColor( Color.BLUE );
+		g.fillRect( x, 0, height, height );
+		g.setColor( Color.LIGHT_GRAY );
+		g.fillOval( x + PADDING, PADDING, height - PADDING * 2, height - PADDING * 2 );
+		x += height + PADDING;
+		g.setColor( Color.BLACK );
+		g.drawString( "class color", x, fm.getMaxAscent() + PADDING );
+		x += fm.stringWidth( "class color" ) + PADDING * 4;
+		
+		g.setColor( Color.LIGHT_GRAY );
+		g.fillRect( x, 0, height, height );
+		g.setColor( Color.BLUE );
+		g.fillOval( x + PADDING, PADDING, height - PADDING * 2, height - PADDING * 2 );
+		x += height + PADDING;
+		g.setColor( Color.BLACK );
+		g.drawString( "block color", x, fm.getMaxAscent() + PADDING );
+		x += fm.stringWidth( "block color" ) + PADDING * 4;
+	}
+}

+ 6 - 0
src/view/MainView.java

@@ -1,6 +1,7 @@
 package view;
 
 import java.awt.BorderLayout;
+import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Font;
 import java.awt.GridLayout;
@@ -29,6 +30,7 @@ import javax.swing.JSplitPane;
 import javax.swing.JTextArea;
 import javax.swing.JTextField;
 import javax.swing.JTree;
+import javax.swing.border.BevelBorder;
 import javax.swing.filechooser.FileNameExtensionFilter;
 import javax.swing.tree.DefaultTreeModel;
 import javax.swing.tree.TreePath;
@@ -534,6 +536,10 @@ public class MainView {
         frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
         frame.setVisible( true );
 
+        LegendView statusPanel = new LegendView();
+		statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
+		frame.add(statusPanel, BorderLayout.SOUTH);
+
         JLayeredPane layne = new JLayeredPane();
         layne.setLayout( new BorderLayout() );
         JPanel pl = new JPanel();