Some improvements!
This commit is contained in:
		
							parent
							
								
									a0a3b269b0
								
							
						
					
					
						commit
						7a49772540
					
				| 
						 | 
				
			
			@ -3,6 +3,7 @@ package nl.andrewlalis.erme.control.actions;
 | 
			
		|||
import lombok.Setter;
 | 
			
		||||
import nl.andrewlalis.erme.model.MappingModel;
 | 
			
		||||
import nl.andrewlalis.erme.model.Relation;
 | 
			
		||||
import nl.andrewlalis.erme.view.DiagramPanel;
 | 
			
		||||
import nl.andrewlalis.erme.view.view_models.MappingModelViewModel;
 | 
			
		||||
 | 
			
		||||
import javax.imageio.ImageIO;
 | 
			
		||||
| 
						 | 
				
			
			@ -84,6 +85,7 @@ public class ExportToImageAction extends AbstractAction {
 | 
			
		|||
	private BufferedImage renderModel() {
 | 
			
		||||
		BufferedImage bufferedImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
 | 
			
		||||
		Graphics2D g2d = bufferedImage.createGraphics();
 | 
			
		||||
		DiagramPanel.prepareGraphics(g2d);
 | 
			
		||||
		final Rectangle bounds = this.model.getViewModel().getBounds(g2d);
 | 
			
		||||
		BufferedImage outputImage = new BufferedImage(bounds.width, bounds.height + 20, BufferedImage.TYPE_INT_RGB);
 | 
			
		||||
		g2d = outputImage.createGraphics();
 | 
			
		||||
| 
						 | 
				
			
			@ -91,6 +93,7 @@ public class ExportToImageAction extends AbstractAction {
 | 
			
		|||
		g2d.fillRect(outputImage.getMinX(), outputImage.getMinY(), outputImage.getWidth(), outputImage.getHeight());
 | 
			
		||||
		AffineTransform originalTransform = g2d.getTransform();
 | 
			
		||||
		g2d.setTransform(AffineTransform.getTranslateInstance(-bounds.x, -bounds.y));
 | 
			
		||||
		DiagramPanel.prepareGraphics(g2d);
 | 
			
		||||
 | 
			
		||||
		List<Relation> selectedRelations = this.model.getSelectedRelations();
 | 
			
		||||
		this.model.getSelectedRelations().forEach(r -> r.setSelected(false));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,9 @@ public class AddRelationAction extends AbstractAction {
 | 
			
		|||
				JOptionPane.PLAIN_MESSAGE
 | 
			
		||||
		);
 | 
			
		||||
		if (name != null) {
 | 
			
		||||
			this.model.addRelation(new Relation(this.model, new Point(0, 0), name));
 | 
			
		||||
			Rectangle bounds = this.model.getRelationBounds();
 | 
			
		||||
			Point center = new Point(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2);
 | 
			
		||||
			this.model.addRelation(new Relation(this.model, center, name));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,8 @@ public class MappingModel implements Serializable, Viewable {
 | 
			
		|||
 | 
			
		||||
	private transient Set<ModelChangeListener> changeListeners;
 | 
			
		||||
 | 
			
		||||
	private final static long serialVersionUID = 6153776381873250304L;
 | 
			
		||||
 | 
			
		||||
	public MappingModel() {
 | 
			
		||||
		this.relations = new HashSet<>();
 | 
			
		||||
		this.changeListeners = new HashSet<>();
 | 
			
		||||
| 
						 | 
				
			
			@ -70,6 +72,20 @@ public class MappingModel implements Serializable, Viewable {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public Rectangle getRelationBounds() {
 | 
			
		||||
		int minX = Integer.MAX_VALUE;
 | 
			
		||||
		int minY = Integer.MAX_VALUE;
 | 
			
		||||
		int maxX = Integer.MIN_VALUE;
 | 
			
		||||
		int maxY = Integer.MIN_VALUE;
 | 
			
		||||
		for (Relation r : this.getRelations()) {
 | 
			
		||||
			minX = Math.min(minX, r.getPosition().x);
 | 
			
		||||
			minY = Math.min(minY, r.getPosition().y);
 | 
			
		||||
			maxX = Math.max(maxX, r.getPosition().x);
 | 
			
		||||
			maxY = Math.max(maxY, r.getPosition().y);
 | 
			
		||||
		}
 | 
			
		||||
		return new Rectangle(minX, minY, maxX - minX, maxY - minY);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void addChangeListener(ModelChangeListener listener) {
 | 
			
		||||
		if (this.changeListeners == null) {
 | 
			
		||||
			this.changeListeners = new HashSet<>();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -100,9 +100,7 @@ public class DiagramPanel extends JPanel implements ModelChangeListener {
 | 
			
		|||
 | 
			
		||||
	public Graphics2D getGraphics2D(Graphics g) {
 | 
			
		||||
		Graphics2D g2d = (Graphics2D) g;
 | 
			
		||||
		g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
 | 
			
		||||
		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 | 
			
		||||
		g.setFont(g.getFont().deriveFont(14.0f));
 | 
			
		||||
		prepareGraphics(g2d);
 | 
			
		||||
		return g2d;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -130,4 +128,10 @@ public class DiagramPanel extends JPanel implements ModelChangeListener {
 | 
			
		|||
		RemoveAttributeAction.getInstance().setModel(this.model);
 | 
			
		||||
		LoadSampleModelAction.getInstance().setDiagramPanel(this);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static void prepareGraphics(Graphics2D g) {
 | 
			
		||||
		g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
 | 
			
		||||
		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 | 
			
		||||
		g.setFont(g.getFont().deriveFont(14.0f));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue