Graphic Rendering System 1.0
A Java-based graphic rendering system implementing various design patterns
Loading...
Searching...
No Matches
RemoteRendererProxy.java
Go to the documentation of this file.
1package com.example.graphics.proxy;
2
3import com.example.graphics.model.Circle;
4import com.example.graphics.model.Line;
5import com.example.graphics.model.Rectangle;
6import com.example.graphics.model.Triangle;
7import com.example.graphics.render.Renderer;
8import com.example.graphics.render.SwingRenderer;
9
18 private boolean connected;
19
24 this.connected = false;
25 }
26
32 this.localRenderer = localRenderer;
33 }
34
39 public boolean connect() {
40 if (!connected) {
41 try {
42 System.out.println("Connecting to remote rendering service...");
43 // Simulate connection setup
44 Thread.sleep(500);
46 connected = true;
47 System.out.println("Connected to remote rendering service.");
48 return true;
49 } catch (Exception e) {
50 System.err.println("Failed to connect to remote rendering service: " + e.getMessage());
51 return false;
52 }
53 }
54 return true;
55 }
56
60 public void disconnect() {
61 if (connected) {
62 System.out.println("Disconnecting from remote rendering service...");
63 // Simulate disconnection
64 try {
65 Thread.sleep(200);
66 } catch (InterruptedException e) {
67 Thread.currentThread().interrupt();
68 }
69 remoteRenderer = null;
70 connected = false;
71 System.out.println("Disconnected from remote rendering service.");
72 }
73 }
74
79 public boolean isConnected() {
80 return connected;
81 }
82
87 private void ensureConnected() {
88 if (!connected) {
89 throw new IllegalStateException("Not connected to remote rendering service");
90 }
91 }
92
93 @Override
94 public void renderCircle(Circle circle) {
96 remoteRenderer.renderCircle(circle);
97
98 // 同时在本地GUI显示
99 if (localRenderer != null) {
100 localRenderer.renderCircle(circle);
101 }
102 }
103
104 @Override
105 public void renderRectangle(Rectangle rectangle) {
107 remoteRenderer.renderRectangle(rectangle);
108
109 // 同时在本地GUI显示
110 if (localRenderer != null) {
111 localRenderer.renderRectangle(rectangle);
112 }
113 }
114
115 @Override
116 public void renderLine(Line line) {
118 remoteRenderer.renderLine(line);
119
120 // 同时在本地GUI显示
121 if (localRenderer != null) {
122 localRenderer.renderLine(line);
123 }
124 }
125
126 @Override
127 public void renderTriangle(Triangle triangle) {
129 remoteRenderer.renderTriangle(triangle);
130
131 // 同时在本地GUI显示
132 if (localRenderer != null) {
133 localRenderer.renderTriangle(triangle);
134 }
135 }
136
137 @Override
138 public void clear() {
140 remoteRenderer.clear();
141
142 // 同时在本地GUI清除
143 if (localRenderer != null) {
144 localRenderer.clear();
145 }
146 }
147
148 @Override
149 public void display() {
151 remoteRenderer.display();
152
153 // 同时在本地GUI显示
154 if (localRenderer != null) {
155 localRenderer.display();
156 }
157 }
158}
void setLocalRenderer(SwingRenderer localRenderer)