📄 browsertabitem.java
字号:
/*
* Copyright (c) 2007 Software Wizards Pty Ltd, Victoria, Australia.
* mailto:enquires@swz.com.au. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted. See the GNU General Public License
* for more details.
*
* Redistribution of the SWTtoCOM software is not permitted as part of any
* commercial product. Licensing terms for such distribution may be
* obtained from the copyright holder.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package au.com.swz.swttocom.example.browser;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.internal.ole.win32.COM;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.ole.win32.OleAutomation;
import org.eclipse.swt.ole.win32.Variant;
import org.eclipse.swt.widgets.Composite;
import au.com.swz.swttocom.example.browser.shdocvw.DWebBrowserEvents2Adapter;
import au.com.swz.swttocom.example.browser.shdocvw.WebBrowser;
import au.com.swz.swttocom.example.browser.shdocvw.WebBrowserComposite;
import au.com.swz.swttocom.example.browser.shdocvw.enums.CommandStateChangeConstants;
import au.com.swz.swttocom.example.browser.shdocvw.enums.OLECMDEXECOPT;
import au.com.swz.swttocom.example.browser.shdocvw.enums.OLECMDID;
import au.com.swz.swttocom.swt.types.IAutomationObject;
import au.com.swz.swttocom.swt.types.pointer.BooleanPointer;
import au.com.swz.swttocom.swt.types.pointer.IDispatchPointer;
public class BrowserTabItem {
private WebBrowser webBrowser;
private SWTBrowser swtBrowser;
private CTabItem tabItem;
private boolean backEnabled;
private boolean forwardEnabled;
private String address;
BrowserTabItem(SWTBrowser swtBrowser, CTabItem tabItem) {
this.swtBrowser = swtBrowser;
this.tabItem = tabItem;
}
public Composite createComposite(Composite parent) {
Composite pnlClient = new Composite(parent, SWT.NONE);
GridLayout gridLayout = new GridLayout(1, true);
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
gridLayout.numColumns = 1;
gridLayout.makeColumnsEqualWidth = true;
gridLayout.horizontalSpacing = 0;
gridLayout.verticalSpacing = 0;
pnlClient.setLayout(gridLayout);
WebBrowserComposite webBrowserComposite = new WebBrowserComposite(pnlClient, SWT.NONE);
webBrowser = webBrowserComposite.getWebBrowserAutomation();
GridData layoutData = new GridData();
layoutData.verticalAlignment = GridData.FILL;
layoutData.horizontalAlignment = GridData.FILL;
layoutData.widthHint = -1;
layoutData.heightHint = -1;
layoutData.horizontalIndent = 0;
layoutData.horizontalSpan = 1;
layoutData.verticalSpan = 1;
layoutData.grabExcessHorizontalSpace = true;
layoutData.grabExcessVerticalSpace = true;
webBrowserComposite.setLayoutData(layoutData);
webBrowserComposite.oleShow();
webBrowser.setSilent(true);
webBrowserComposite.addDWebBrowserEvents2Listener(new DWebBrowserEvents2Adapter() {
public void newWindow3(IDispatchPointer ppDisp, BooleanPointer cancel, int dwFlags, String bstrUrlContext, String bstrUrl) {
BrowserTabItem browserTab = swtBrowser.openNewTab();
OleAutomation auto = browserTab.getOleAutomation();
Variant variant = new Variant(auto);
ppDisp.setValue(variant.getDispatch());
}
public void navigateComplete2(IAutomationObject pDisp, Variant url) {
if (url.getType() == COM.VT_EMPTY) {
address = "";
} else {
address = url.getString();
}
swtBrowser.setAddressText(address);
}
public void statusTextChange(String text) {
swtBrowser.setStatusText(text);
}
public void progressChange(int progress, int progressMax) {
swtBrowser.setProgress(progress, progressMax);
}
public void commandStateChange(int command, boolean enable) {
CommandStateChangeConstants cmd = CommandStateChangeConstants.getEnumByValue(command);
if (cmd == CommandStateChangeConstants.CSC_NAVIGATEBACK) {
backEnabled = enable;
swtBrowser.enableBack(enable);
}
if (cmd == CommandStateChangeConstants.CSC_NAVIGATEFORWARD) {
forwardEnabled = enable;
swtBrowser.enableForward(enable);
}
}
public void titleChange(String text) {
tabItem.setText(text);
}
});
return pnlClient;
}
public void goHome() {
webBrowser.goHome();
}
public void goBack() {
webBrowser.goBack();
}
public void goForward() {
webBrowser.goForward();
}
public void goSearch() {
webBrowser.goSearch();
}
public void stop() {
webBrowser.stop();
}
public void refresh() {
webBrowser.refresh();
}
public void navigate(String url) {
webBrowser.navigate(url);
}
public void print() {
webBrowser.execWB(OLECMDID.OLECMDID_PRINT, OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT);
}
public void copy() {
webBrowser.execWB(OLECMDID.OLECMDID_COPY, OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT);
}
public void printPreview() {
webBrowser.execWB(OLECMDID.OLECMDID_PRINTPREVIEW, OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT);
}
public void saveAs() {
webBrowser.execWB(OLECMDID.OLECMDID_SAVEAS, OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT);
}
public OleAutomation getOleAutomation() {
return webBrowser.getOleAutomation();
}
public boolean isBackEnabled() {
return backEnabled;
}
public boolean isForwardEnabled() {
return forwardEnabled;
}
public String getAddress() {
return address;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -