forked from fanruan/design
superman
7 years ago
5 changed files with 9 additions and 149 deletions
@ -1,93 +0,0 @@
|
||||
package com.fr.design.mainframe.bbs; |
||||
|
||||
import java.awt.BorderLayout; |
||||
import java.awt.Canvas; |
||||
import java.awt.Frame; |
||||
|
||||
import org.eclipse.swt.SWT; |
||||
import org.eclipse.swt.awt.SWT_AWT; |
||||
import org.eclipse.swt.browser.Browser; |
||||
import org.eclipse.swt.layout.FillLayout; |
||||
import org.eclipse.swt.widgets.Display; |
||||
import org.eclipse.swt.widgets.Shell; |
||||
|
||||
import com.fr.design.dialog.UIDialog; |
||||
import com.fr.design.utils.gui.GUICoreUtils; |
||||
import com.fr.general.Inter; |
||||
|
||||
/** |
||||
* 封装浏览器的dialog |
||||
* |
||||
*/ |
||||
public class BBSBrowserDialog extends UIDialog { |
||||
|
||||
private static final int WIDTH = 600; |
||||
private static final int HEIGHT = 400; |
||||
|
||||
private DisplayThread displayThread; |
||||
private Canvas canvas; |
||||
private String url; |
||||
|
||||
public BBSBrowserDialog(Frame parent) { |
||||
super(parent); |
||||
|
||||
this.displayThread = new DisplayThread(); |
||||
this.displayThread.start(); |
||||
this.canvas = new Canvas(); |
||||
setLayout(new BorderLayout()); |
||||
add(canvas, BorderLayout.CENTER); |
||||
|
||||
this.setSize(WIDTH, HEIGHT); |
||||
GUICoreUtils.centerWindow(this); |
||||
} |
||||
|
||||
@Override |
||||
public String getTitle() { |
||||
return Inter.getLocText("FR-Designer_Forum"); |
||||
} |
||||
|
||||
/** |
||||
* 通知组件可以显示了 |
||||
* |
||||
*/ |
||||
public void addNotify() { |
||||
super.addNotify(); |
||||
Display dis = displayThread.getDisplay(); |
||||
dis.syncExec(new Runnable() { |
||||
|
||||
public void run() { |
||||
Shell shell = SWT_AWT.new_Shell(displayThread.getDisplay(), canvas); |
||||
shell.setLayout(new FillLayout()); |
||||
final Browser browser = new Browser(shell, SWT.NONE); |
||||
browser.setLayoutData(BorderLayout.CENTER); |
||||
browser.setUrl(url); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
public String getUrl() { |
||||
return url; |
||||
} |
||||
|
||||
public void setUrl(String url) { |
||||
this.url = url; |
||||
} |
||||
|
||||
/** |
||||
* 检测面板中内容合法性 |
||||
* |
||||
*/ |
||||
public void checkValid() throws Exception { |
||||
} |
||||
|
||||
/** |
||||
* 在窗口中显示指定的url |
||||
* |
||||
* @param url 指定的url |
||||
* |
||||
*/ |
||||
public void showWindow(String url){ |
||||
this.setUrl(url); |
||||
this.setVisible(true); |
||||
} |
||||
} |
@ -1,46 +0,0 @@
|
||||
package com.fr.design.mainframe.bbs; |
||||
|
||||
import org.eclipse.swt.widgets.Display; |
||||
|
||||
public class DisplayThread extends Thread { |
||||
|
||||
private Display display; |
||||
Object sem = new Object(); |
||||
|
||||
/** |
||||
* 运行 |
||||
* |
||||
*/ |
||||
public void run() { |
||||
synchronized (sem) { |
||||
display = Display.getDefault(); |
||||
sem.notifyAll(); |
||||
} |
||||
swtEventLoop(); |
||||
} |
||||
|
||||
private void swtEventLoop() { |
||||
while (true) { |
||||
try{ |
||||
if (!display.readAndDispatch()) { |
||||
display.sleep(); |
||||
} |
||||
}catch (Exception e) { |
||||
continue; |
||||
} |
||||
} |
||||
} |
||||
|
||||
public Display getDisplay() { |
||||
try { |
||||
synchronized (sem) { |
||||
while (display == null) { |
||||
sem.wait(); |
||||
} |
||||
return display; |
||||
} |
||||
} catch (Exception e) { |
||||
return null; |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue