package org.soyatec.windows.azure.jdt.ui;
import java.io.File;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.soyatec.windows.azure.jdt.AzureJdtPlugin;
import org.soyatec.windows.azure.util.JFaceUtil;
public class CustomStringButtonDialogField extends Composite {
private Label fLabel;
private Text fLocation;
private Button fButton;
private static final String DIALOGSTORE_LAST_EXTERNAL_LOC = AzureJdtPlugin.PLUGIN_ID
+ ".last.external.project";
public CustomStringButtonDialogField(Composite parent, int style,
String label, String desc, int width) {
super(parent, style);
setLayout(new GridLayout(3, false));
this.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
doFillIntoGrid(this, label, desc, width);
addListener();
}
public void doFillIntoGrid(Composite parent, String label, String desc,
int width) {
fLabel = createLableControl(parent, label, desc, width);
fLocation = JFaceUtil.createText(parent);
fButton = getChangeControl(parent);
}
/**
* Sets the label of the button.
*/
public void setButtonLabel(String label) {
fButton.setLayoutData(label);
}
/**
* Sets the enable state of the button.
*/
public void enableButton(boolean enable) {
fButton.setEnabled(enable);
}
private Label createLableControl(Composite parent, String label,
String desc, int width) {
Label tooltipLabel = new Label(parent, SWT.None);
tooltipLabel.setText(label);
tooltipLabel.setToolTipText(desc);
GridData data = new GridData();
data.widthHint = width;
tooltipLabel.setLayoutData(data);
return tooltipLabel;
}
void addListener() {
fButton.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
public void widgetSelected(SelectionEvent e) {
onButtonPressed(e);
}
});
}
public void setLabelText(String text) {
}
private Button getChangeControl(Composite parent) {
return JFaceUtil.createButton(parent, SWT.None, "Browse...", 1);
}
public Text getTextControl() {
return fLocation;
}
public Button getButtonControl() {
return fButton;
}
public String getText() {
return fLocation.getText();
}
public void setText(String path) {
this.fLocation.setText(path);
}
public void onButtonPressed(SelectionEvent e) {
final DirectoryDialog dialog = new DirectoryDialog(this.getShell());
dialog.setMessage("Choose a directory");
String directoryName = fLocation.getText().trim();
if (directoryName.length() == 0) {
String prevLocation = AzureJdtPlugin.getDefault()
.getDialogSettings().get(DIALOGSTORE_LAST_EXTERNAL_LOC);
if (prevLocation != null) {
directoryName = prevLocation;
}
}
if (directoryName.length() > 0) {
final File path = new File(directoryName);
if (path.exists())
dialog.setFilterPath(directoryName);
}
final String selectedDirectory = dialog.open();
if (selectedDirectory != null) {
fLocation.setText(selectedDirectory);
AzureJdtPlugin.getDefault().getDialogSettings().put(
DIALOGSTORE_LAST_EXTERNAL_LOC, selectedDirectory);
}
}
}
分享到:
相关推荐
在SWT中,自定义控件通常继承自`org.eclipse.swt.widgets.Control`类或其子类,如`Composite`。`Control`类是所有SWT可视对象的基类,而`Composite`则可以作为一个容器,包含其他控件。 ### 3. 绘制控件 自定义控件...
下面我们将深入探讨如何实现WF4自定义容器活动,并在自定义活动中添加其他活动。 一、理解WF4自定义容器活动 在WF4中,容器活动是一种特殊类型的活动,它可以包含其他活动作为其子活动。这些子活动可以是内置的WF4...
winform自定义控件可以分为三种类型:复合控件(Composite Controls)、扩展控件(Extended Controls)和自定义控件(Custom Controls)。其中,复合控件是将现有的各种控件组合起来,形成一个新的控件;扩展控件是...
《Composite2011中文手册》是一份专为合成软件用户设计的详尽参考资料,它提供了全面的指导和深入理解该软件所需的各项功能。作为一款处理图像和视频的专业工具,Composite2011在视觉效果制作领域具有广泛的应用。这...
1. **复合控件(Composite Controls)**: 复合控件是一种将现有控件组合在一起以创建新控件的方法。这种控件通常是从`UserControl`类派生的,允许开发者在设计时将多个基础控件拖放到一起,形成一个复合的用户界面...
在组合控件时,我们可以创建一个`CompositeView`,它同时包含自定义的TextView和EditText。这个组合视图可以在一个布局中提供文本展示和输入的功能,使得界面更加整洁。为了实现这一目标,我们需要在Java类中实例化...
复合控件(Composite Controls) 复合控件是将现有的控件组合起来,形成一个新的控件,以满足用户的需求。复合控件的创建步骤是: 1. 新建一个 Windows 控件库项目 2. 向复合控件中添加 Visual Studio 2005 中的...
这个"JSF2自定义组件编程系列第五部分 源代码"着重讲解了如何将复合组件(Composite Component)打包到JAR文件中,并通过Maven3、JSF2、Ubuntu操作系统、GlassFish v3.0.1应用服务器以及Emacs JDEE集成开发环境进行...
1. 复合控件(Composite Controls): 复合控件是一种将多个现有控件组合在一起,形成新的具有特定功能的控件。这种控件通常基于`UserControl`类派生。例如,在VS 2010中,我们可以创建一个Windows窗体控件库程序,...
xmlns:my="http://xmlns.jcp.org/jsf/composite/mycomponents"> ``` 在这里,`my`是自定义命名空间,`mycomponents`是组件库的名称。 6. **复合组件**: JSF 2.0引入了复合组件的概念,它允许开发者将多个...
首先,我们需要理解Android中的复合控件(Composite Control)。复合控件是由多个基本组件组合而成的复杂UI元素,它封装了特定的功能和行为,便于重用和维护。自定义标题栏就是一个典型的复合控件例子,通常包括返回...
在“impact-composite”文件中,很可能包含了具体的ABAQUS输入文件(.inp)、结果文件(.dat或.vtk)以及可能的用户自定义材料模型。通过对比不同初速度和固定速度的模拟结果,我们可以深入理解这些参数如何影响复合...
本文将详细介绍在C# WinForms应用中如何创建三种类型的自定义控件:复合控件(Composite Controls)、扩展控件(Extended Controls)以及完全自定义控件(Custom Controls)。 #### 二、复合控件(Composite Controls) **...
在PB(PowerBuilder)开发环境中,自定义报表是一项至关重要的功能,它允许开发者根据实际需求设计、保存并调用各种报表格式。PB9,即PowerBuilder 9版本,提供了丰富的报表设计工具,包括Grid、Freeform和Composite...
【标题解析】:“前端项目-d3-composite-projections.zip”这个标题表明这是一个关于前端开发的项目,主要聚焦在D3库的一个特定功能——复合投影(Composite Projections)。D3.js是一个强大的JavaScript库,用于...
这些新增加的功能使得开发者能够轻松地自定义编辑器中的飞出控件,并且可以根据需求添加任何类型的飞出组件。 #### 三、存在的问题与未来方向 尽管`Flyout Composite`在GEF编辑器中表现良好,但在将其应用到普通的...