Skip to content

Commit 5e12f53

Browse files
authored
Merge pull request #10 from vykio/macos-bug-2
Macos bug 2 -> drawing-zone
2 parents d6fe97f + 684d885 commit 5e12f53

File tree

5 files changed

+53
-30
lines changed

5 files changed

+53
-30
lines changed

.idea/vcs.xml

-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.tech.app.functions;
2+
3+
import java.util.Locale;
4+
5+
public final class FUtils {
6+
7+
public static class OS {
8+
9+
public static String getOs() {
10+
return System.getProperty("os.name");
11+
}
12+
13+
public static boolean isMacOs() {
14+
return (getOs().toLowerCase(Locale.ROOT).contains("max"));
15+
}
16+
17+
}
18+
19+
20+
21+
}

src/com/tech/app/windows/MainWindow.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.tech.app.windows;
22

3+
import com.tech.app.functions.FUtils;
34
import com.tech.app.models.Model;
45
import com.tech.app.windows.handlers.DrawMouse;
56
import com.tech.app.windows.handlers.MainWindowHandler;
@@ -17,8 +18,7 @@
1718
public class MainWindow extends Window {
1819

1920
public MainWindow(int width, int height) throws UnsupportedLookAndFeelException {
20-
21-
super("Fenetre principale - RDP", width, height, true, true);
21+
super("Fenetre principale - RDP - " + FUtils.OS.getOs(), width, height, true, true);
2222
UIManager.setLookAndFeel(new MetalLookAndFeel());
2323
setWindowHandler(new MainWindowHandler(this));
2424
build();

src/com/tech/app/windows/handlers/DrawMouse.java

+9-8
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ public void mouseClicked(java.awt.event.MouseEvent mouseEvent) {
7878
@Override
7979
public void mousePressed(java.awt.event.MouseEvent mouseEvent) {
8080
//System.out.println("Mouse pressed");
81-
x = mouseEvent.getX();
82-
y = mouseEvent.getY();
81+
x = mouseEvent.getX() * (int)drawPanel.scaleFactor;
82+
y = mouseEvent.getY() * (int)drawPanel.scaleFactor;
8383

8484
drawPanel.mouseX = x;
8585
drawPanel.mouseY = y;
@@ -89,19 +89,19 @@ public void mousePressed(java.awt.event.MouseEvent mouseEvent) {
8989
if (SwingUtilities.isLeftMouseButton(mouseEvent)){
9090
switch(mode){
9191
case PLACE:
92-
drawPanel.addPlace(mouseEvent.getX() /drawPanel.scaleX,mouseEvent.getY() / drawPanel.scaleY);
92+
drawPanel.addPlace(x/drawPanel.scaleX,y/ drawPanel.scaleY);
9393
System.out.println("Place mise");
9494
break;
9595
case ARC:
96-
drawPanel.loadCoordinatesArc(mouseEvent.getX() /drawPanel.scaleX, mouseEvent.getY() /drawPanel.scaleY);
96+
drawPanel.loadCoordinatesArc(x /drawPanel.scaleX, y /drawPanel.scaleY);
9797
System.out.println("Arc test");
9898
break;
9999
case TRANSITION:
100-
drawPanel.addTransition(mouseEvent.getX() / drawPanel.scaleX,mouseEvent.getY()/ drawPanel.scaleY);
100+
drawPanel.addTransition(x / drawPanel.scaleX,y/ drawPanel.scaleY);
101101
System.out.println("Transition mise");
102102
break;
103103
case ATTRIBUTS:
104-
objectSelected = drawPanel.getSelectedObject(mouseEvent.getX() / drawPanel.scaleX, mouseEvent.getY() / drawPanel.scaleY);
104+
objectSelected = drawPanel.getSelectedObject(x / drawPanel.scaleX, y / drawPanel.scaleY);
105105
if (objectSelected != null) {
106106
drawPanel.showOptions(objectSelected);
107107
} else {
@@ -110,6 +110,7 @@ public void mousePressed(java.awt.event.MouseEvent mouseEvent) {
110110
break;
111111
case SELECT:
112112
objectDragged = drawPanel.getSelectedObject(x/drawPanel.scaleX, y/drawPanel.scaleY);
113+
System.out.println(objectDragged);
113114
break;
114115
}
115116
}
@@ -145,8 +146,8 @@ public void mouseExited(java.awt.event.MouseEvent mouseEvent) {
145146
}
146147

147148
public void mouseDragged(MouseEvent e) {
148-
int dx = e.getX() - x;
149-
int dy = e.getY() - y;
149+
int dx = e.getX()*(int)drawPanel.scaleFactor - x;
150+
int dy = e.getY()*(int)drawPanel.scaleFactor - y;
150151

151152
if (SwingUtilities.isMiddleMouseButton(e)) {
152153

src/com/tech/app/windows/panels/DrawPanel.java

+21-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.tech.app.windows.panels;
22

3+
import com.tech.app.functions.FMaths;
4+
import com.tech.app.functions.FUtils;
35
import com.tech.app.models.Arc;
46
import com.tech.app.models.Model;
57
import com.tech.app.models.Place;
@@ -35,15 +37,21 @@ public class DrawPanel extends JPanel {
3537
public final double MIN_ZOOM = 0.5;
3638

3739
/* Variables d'agrandissement et zoom */
38-
public double scaleX = 1;
39-
public double scaleY = 1;
40+
public double scaleFactor;
41+
public double scaleX;
42+
public double scaleY;
43+
4044
public AffineTransform transform;
4145

4246
public DrawPanel(JFrame frame, Model model) {
47+
this.scaleFactor = FUtils.OS.isMacOs() ? 2 : 1;
48+
this.scaleX = this.scaleFactor;
49+
this.scaleY = this.scaleFactor;
50+
4351
this.frame = frame;
4452
this.model = model;
4553
this.transform = AffineTransform.getScaleInstance(scaleX, scaleY);
46-
this.setBorder(BorderFactory.createLineBorder(Color.BLACK, 5));
54+
//this.setBorder(BorderFactory.createLineBorder(Color.BLACK, 5));
4755
}
4856

4957
/* Utilisé pour déplacer tous les objets (click-molette) */
@@ -70,16 +78,16 @@ public void updatePosition(Object obj, double x, double y, double scaleX, double
7078
if (obj != null) {
7179
if (obj instanceof Place) {
7280
Place p = (Place) obj;
73-
if (p.forme.getBounds2D().contains(x, y)) {
81+
//if (p.forme.getBounds2D().contains(x, y)) {
7482
p.updatePosition(p.getX() + dx * 1 / scaleX, p.getY() + dy * 1 / scaleY);
7583
repaint();
76-
}
84+
//}
7785
} else {
7886
Transition p = (Transition) obj;
79-
if (p.forme.getBounds2D().contains(x, y)) {
87+
//if (p.forme.getBounds2D().contains(x, y)) {
8088
p.updatePosition(p.getX() + dx * 1 / scaleX, p.getY() + dy * 1 / scaleY);
8189
repaint();
82-
}
90+
//}
8391
}
8492
}
8593
}
@@ -124,8 +132,8 @@ public void paintComponent(Graphics g) {
124132
}
125133
Color color = g.getColor();
126134
g.setColor(Color.BLACK);
127-
g.setFont(new Font("Console", Font.PLAIN, (int)(15/scaleX)));
128-
g.drawString(draggedObject.toString(), (int)(10/scaleX), (int)((this.frame.getContentPane().getSize().getHeight()-50)/scaleY));
135+
g.setFont(new Font("Console", Font.PLAIN, (int)(scaleFactor*15/scaleX)));
136+
g.drawString(draggedObject.toString(), (int)(10/scaleX), (int)((this.frame.getContentPane().getSize().getHeight()-50)*scaleFactor/scaleY));
129137
g.setColor(color);
130138
}
131139

@@ -134,11 +142,11 @@ public void paintComponent(Graphics g) {
134142
private void drawTooltips(Graphics g) {
135143
Color color = g.getColor();
136144
g.setColor(Color.BLUE);
137-
g.setFont(new Font("Console", Font.PLAIN, (int)(15/scaleX)));
145+
g.setFont(new Font("Console", Font.PLAIN, (int)(15/scaleX*scaleFactor)));
138146
if (this.indexOfClickArc == 1) {
139-
g.drawString("Arc origin set", (int)(10/scaleX), (int)((this.frame.getContentPane().getSize().getHeight()-80)/scaleY));
147+
g.drawString("Arc origin set", (int)(10/scaleX*scaleFactor), (int)((this.frame.getContentPane().getSize().getHeight()-80)*scaleFactor/scaleY));
140148
}
141-
g.drawString("X:" + mouseX + "-Y:" + mouseY, (int)(10/scaleX), (int)(50/scaleY));
149+
//g.drawString("X:" + FMaths.round(mouseX/scaleX,2) + "-Y:" + FMaths.round(mouseY/scaleY, 2), (int)(10/scaleX*scaleFactor), (int)(50/scaleY*scaleFactor));
142150
g.setColor(color);
143151
}
144152

@@ -153,7 +161,7 @@ public void clearAll() {
153161

154162
/* Ajouter une place au système */
155163
public void addPlace(double x, double y){
156-
model.addPlace(new Place("p" + idPlace, x, y));
164+
model.addPlace(new Place("P" + idPlace, x, y));
157165
this.idPlace++;
158166
repaint();
159167
}

0 commit comments

Comments
 (0)