Tolgar
asked on
How to save a text box to a text file in SWT?
I have a GUI and in this GUI I have a text box. After typing something in the textbox, I would like to save these characters in the text box to a text file by clicking a button in the toolbar.
How can I do it in SWT?
Please see this question for more information on how I create the text box:
https://www.experts-exchange.com/questions/28166271/How-to-delete-all-characters-in-a-text-box-using-SWT.html
How can I do it in SWT?
Please see this question for more information on how I create the text box:
https://www.experts-exchange.com/questions/28166271/How-to-delete-all-characters-in-a-text-box-using-SWT.html
As I said in the other question, once you make "txt" accessible from elsewhere in you code, then you can get the text simply by calling txt.getText() and so the code to write this to a text file could be as simple as...
PrintWriter writer = new PrintWriter("textfile.txt");
writer.println(txt.getText());
writer.close();
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Where should I create psd folder?
ASKER
Hi Valeri,
Also, I did this in the Gui.java file:
private static CTabItem txt;
Is this correct?
Also, I did this in the Gui.java file:
private static CTabItem txt;
Is this correct?
"private static CTabItem txt;" - no, it's not correct, it should be of type Text:
static Text txt;
psd folder should be subfolder of the root.
static Text txt;
psd folder should be subfolder of the root.
ASKER
I did all these steps except the psd folder. I created this psd folder manually but I am not sure how I will put RWFile.java file in this folder.
If I create a class, it does not go under psd folder because I need to select a package. If I put the RWFile.java file as a file in that folder then it Gui.java does not see this file.
Can you please help?
If I create a class, it does not go under psd folder because I need to select a package. If I put the RWFile.java file as a file in that folder then it Gui.java does not see this file.
Can you please help?
ASKER
So, this is my directory structure in the attachment. I have the RWFile.java in the package. The swtFile.txt is in the psd folder.
But I am getting this error:
But I am getting this error:
readFromFile problem:
java.io.FileNotFoundException: \psd\swtFile.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at java.io.FileReader.<init>(FileReader.java:41)
directoryTree.png
Try removing the leading slash from that path, so...
private static final String fileName = "/psd/swtFile.txt";
should be...
private static final String fileName = "psd/swtFile.txt";
private static final String fileName = "/psd/swtFile.txt";
should be...
private static final String fileName = "psd/swtFile.txt";
ASKER
I tried it and I got rid of one of the errors. But I still get this error:
This is what I have in those lines:
Gui.java:390
ToolBarListener.java:41
Gui.java:61
Do you have any idea why I am getting this exception?
Exception in thread "main" java.lang.NullPointerException
at com.a.b.c.Gui.readTxt(Gui.java:61)
at com.a.b.c.ToolBarListener.handleEvent(ToolBarListener.java:41)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at com.a.b.c.Gui.main(Gui.java:390)
This is what I have in those lines:
Gui.java:390
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) { //LINE 390
display.sleep();
}
}
ToolBarListener.java:41
} else if (toolItem == Gui.item111) {
Gui.readTxt(); // LINE 41
Gui.java:61
public static void readTxt() {
txt.setText(rwFile.readFromFile()); // LINE 61
}
Do you have any idea why I am getting this exception?
Do you have any idea why I am getting this exception?Because at that point in your code (Gui.java : 61) either "txt" or "rwFile" are null. How are you declaring and initialising those variables?
ASKER
@mcccarl: This is how I declare them:
static Text txt;
static RWFile rwFile = new RWFile();
Ok then, so I would say that most likely the NullPointerException is due to the "txt" variable being null (since rwFile is immediately intialised).
Where do you assign the variable "txt" a value? And does that ALWAYS happen before the user can click the toolbar button to read from the file into the Text field? (Perhaps if you can post the whole code, it might be quicker for us to debug rather than getting in tiny snippets)
Where do you assign the variable "txt" a value? And does that ALWAYS happen before the user can click the toolbar button to read from the file into the Text field? (Perhaps if you can post the whole code, it might be quicker for us to debug rather than getting in tiny snippets)
ASKER
I see.
This is the GUI.java file:
And this is the RWFile.java:
This is the TolbarListener.java:
This is the CustomToolbar.java:
This is the ChangeListDlg.java:
Note: My code tries to read a file in the psd folder which locates in the root of the project. However, my main aim is to read any file that is on the machine. So, I want to be able to browse and select the file that I want to read.
I really appreciate for your help,
This is the GUI.java file:
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.events.ShellListener;
public class Gui {
static ToolItem item1;
static ToolItem item11;
static ToolItem item111;
static ToolItem item1111;
static ToolItem item12;
static ToolItem item13;
static ToolItem item23;
static CTabFolder folder;
static ToolItem item2;
static ToolItem item22;
static ToolItem item222;
static ToolItem item3;
static ToolItem item33;
static ToolItem item333;
static ToolItem item3333;
static ToolItem item33333;
static ToolItem item333333;
static ToolItem item3333333;
static ToolItem item33333333;
static Text txt;
private static ToolBarListener toolBarListener = new ToolBarListener();
static RWFile rwFile = new RWFile();
public static void swichTabChecks() {
folder.setSelection(1);
}
public static void swichTabResults() {
folder.setSelection(2);
}
public static void swichTabFiles() {
folder.setSelection(0);
}
public static void readTxt() {
txt.setText(rwFile.readFromFile());
}
public static void writeTxt() {
rwFile.writeToFile(txt.getText());
}
public static void clearTxt() {
txt.setText("");
}
public static void selectFileFolders() {
}
public static void main(String[] args) {
Display display = new Display();
final Shell shell = new Shell(display);
toolBarListener.setShell(shell,display);
shell.setText("Development Desktop Tool");
shell.setLayout(new GridLayout());
// SWT.BOTTOM to show at the bottom
folder = new CTabFolder(shell, SWT.TOP);
GridData data = new GridData(SWT.FILL, GridData.FILL, true, true, 3, 3);
folder.setLayoutData(data);
CTabItem cTabItem1 = new CTabItem(folder, SWT.NONE);
cTabItem1.setText("Files");
CTabItem cTabItem2 = new CTabItem(folder, SWT.NONE);
cTabItem2.setText("Checks");
CTabItem cTabItem3 = new CTabItem(folder, SWT.NONE);
cTabItem3.setText("Results");
// -----------here starts TAB 1 --------------------
Image image_Folder = new Image(display, "folder.png");
Image image_shape_triangle = new Image(display, "shape_triangle.png");
Image image_document = new Image(display, "document.png");
Image image_delete = new Image(display, "delete.png");
Image image_floppy_disk = new Image(display, "floppy_disk.png");
Image image_navigate_right = new Image(display, "navigate_right.png");
Composite compTab1 = new Composite(folder, SWT.NULL);
GridLayout gridLayout1 = new GridLayout(3, false);
compTab1.setLayout(gridLayout1);
//compTab1.setLayoutData(new GridData());
Composite compTB1 = new Composite(compTab1, SWT.NULL);
GridLayout gL1 = new GridLayout(6, false);
gL1.marginLeft = 0; gL1.marginRight = 0; gL1.horizontalSpacing = 0;
compTB1.setLayout(gL1);
GridData sepGD1 = new GridData(GridData.FILL_HORIZONTAL); sepGD1.horizontalSpan = 3;
compTB1.setLayoutData(sepGD1);
compTB1.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_GRAY));
//1st group
CustomToolbar custToolBar1 = new CustomToolbar(compTB1, SWT.FLAT, "Files");
item1 = new ToolItem(custToolBar1.getToolBar(), SWT.NONE);
item1.setImage(image_Folder); item1.setText("Select Files/Directories");
item1.addListener(SWT.Selection, toolBarListener);
item11 = new ToolItem(custToolBar1.getToolBar(), SWT.PUSH);
item11.setImage(image_shape_triangle); item11.setText("Select Changelist");
item11.addListener(SWT.Selection, toolBarListener);
item111 = new ToolItem(custToolBar1.getToolBar(), SWT.PUSH);
item111.setImage(image_document); item111.setText("Select FileList file");
item111.addListener(SWT.Selection, toolBarListener);
item1111 = new ToolItem(custToolBar1.getToolBar(), SWT.PUSH);
item1111.setImage(image_delete); item1111.setText("Clear List");
item1111.addListener(SWT.Selection, toolBarListener);
//This is the separator
Label verticalSepartor11 = new Label(compTB1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD11 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor11.setLayoutData(sepGD11); verticalSepartor11.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//2nd group
CustomToolbar custToolBar11 = new CustomToolbar(compTB1, SWT.FLAT, "Configuration");
item12 = new ToolItem(custToolBar11.getToolBar(), SWT.NONE);
item12.setImage(image_floppy_disk); item12.setText("Save");
item12.addListener(SWT.Selection, toolBarListener);
//This is the separator
Label verticalSepartor12 = new Label(compTB1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD12 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor12.setLayoutData(sepGD12); verticalSepartor12.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//3rd group
CustomToolbar custToolBar111 = new CustomToolbar(compTB1, SWT.FLAT, "Next Actions");
item13 = new ToolItem(custToolBar111.getToolBar(), SWT.NONE);
item13.setImage(image_navigate_right); item13.setText("Specify Checks");
item13.addListener(SWT.Selection, toolBarListener);
//This is the separator
Label verticalSepartor13 = new Label(compTB1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD13 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor13.setLayoutData(sepGD13); verticalSepartor13.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
Label horSepartorTab1 = new Label(compTab1, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.HORIZONTAL);
GridData sepGridDataTab1 = new GridData(GridData.FILL_HORIZONTAL); sepGridDataTab1.horizontalSpan = 3;
horSepartorTab1.setLayoutData(sepGridDataTab1);horSepartorTab1.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
Composite compButtons1 = new Composite(compTab1, SWT.NULL);
FillLayout fillLayout1 = new FillLayout();
fillLayout1.type = SWT.HORIZONTAL;
compButtons1.setLayout(fillLayout1);
cTabItem1.setControl(compTab1);
// -----------here starts TAB 2 --------------------
Image image_folder_document = new Image(display, "folder_document.png");
Image image_selection_delete_2 = new Image(display, "selection_delete_2.png");
Composite compTab2 = new Composite(folder, SWT.NULL);
GridLayout gridLayout2 = new GridLayout(2, false);
compTab2.setLayout(gridLayout2);
//compTab2.setLayoutData(new GridData());
Composite compTB2 = new Composite(compTab2, SWT.NULL);
GridLayout gL2 = new GridLayout(4, false);
gL2.marginLeft = 0; gL2.marginRight = 0; gL2.horizontalSpacing = 0;
compTB2.setLayout(gL2);
GridData sepGD2 = new GridData(GridData.FILL_HORIZONTAL); sepGD2.horizontalSpan = 2;
compTB2.setLayoutData(sepGD2);
compTB2.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_GRAY));
//1st group
CustomToolbar custToolBar2 = new CustomToolbar(compTB2, SWT.FLAT, "Configuration");
item2 = new ToolItem(custToolBar2.getToolBar(), SWT.PUSH);
item2.setImage(image_folder_document); item2.setText("Load saved check list");
item22 = new ToolItem(custToolBar2.getToolBar(), SWT.PUSH);
item22.setImage(image_selection_delete_2); item22.setText("Unselect all");
item222 = new ToolItem(custToolBar2.getToolBar(), SWT.PUSH);
item222.setImage(image_floppy_disk); item222.setText("Save selections");
//This is the separator
Label verticalSepartor21 = new Label(compTB2, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD21 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor21.setLayoutData(sepGD21); verticalSepartor21.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//2nd group
CustomToolbar custToolBar22 = new CustomToolbar(compTB2, SWT.FLAT, "Next Actions");
item23 = new ToolItem(custToolBar22.getToolBar(), SWT.PUSH);
item23.setImage(image_navigate_right); item23.setText("Run checks");
item23.addListener(SWT.Selection, toolBarListener);
//This is the separator
Label verticalSepartor22 = new Label(compTB2, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD22 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor22.setLayoutData(sepGD22); verticalSepartor22.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
Label horSepartorTab2 = new Label(compTab2, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.HORIZONTAL);
GridData sepGridDataTab2 = new GridData(GridData.FILL_HORIZONTAL); sepGridDataTab2.horizontalSpan = 3;
horSepartorTab2.setLayoutData(sepGridDataTab2);horSepartorTab2.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
Composite compButtons2 = new Composite(compTab2, SWT.NULL);
FillLayout fillLayout2 = new FillLayout();
fillLayout2.type = SWT.HORIZONTAL;
compButtons2.setLayout(fillLayout2);
cTabItem2.setControl(compTab2);
// -----------here starts TAB 3 --------------------
Image image_breakpoint = new Image(display, "breakpoint.png");
Image image_redo = new Image(display, "redo.png");
Image image_gecko = new Image(display, "gecko.png");
Image image_navigate_left2 = new Image(display, "navigate_left2_orange.png");
Image image_exit = new Image(display, "exit.png");
Composite compTab3 = new Composite(folder, SWT.NULL);
GridLayout gridLayout3 = new GridLayout(3, false);
compTab3.setLayout(gridLayout3);
Composite compTB3 = new Composite(compTab3, SWT.NULL);
GridLayout gL3 = new GridLayout(11, false);
gL3.marginLeft = 0; gL3.marginRight = 0; gL3.horizontalSpacing = 0;
compTB3.setLayout(gL3);
GridData sepGD3 = new GridData(GridData.FILL_HORIZONTAL); sepGD3.horizontalSpan = 5;
compTB3.setLayoutData(sepGD3);
compTB3.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_GRAY));
//1st group
CustomToolbar custToolBar3 = new CustomToolbar(compTB3, SWT.FLAT, "Configuration");
item3 = new ToolItem(custToolBar3.getToolBar(), SWT.PUSH);
item3.setImage(image_floppy_disk); item3.setText("Save");
item3.addListener(SWT.Selection, toolBarListener);
//This is the separator
Label verticalSepartor31 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD31 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor31.setLayoutData(sepGD31); verticalSepartor31.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//2nd group
CustomToolbar custToolBar33 = new CustomToolbar(compTB3, SWT.FLAT, "Processing");
item33 = new ToolItem(custToolBar33.getToolBar(), SWT.PUSH);
item33.setImage(image_breakpoint); item33.setText("Stop checks");
item33.addListener(SWT.Selection, toolBarListener);
item333 = new ToolItem(custToolBar33.getToolBar(), SWT.PUSH);
item333.setImage(image_redo); item333.setText("Rerun failed");
item333.addListener(SWT.Selection, toolBarListener);
//This is the separator
Label verticalSepartor32 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD32 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor32.setLayoutData(sepGD32); verticalSepartor32.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//3rd group
//CustomToolbar custToolBar333 = new CustomToolbar(compTB3, SWT.FLAT, "Filtering");
CSFilteringCheckBoxes checkBoxes = new CSFilteringCheckBoxes(compTB3, SWT.FLAT);
//This is the separator
Label verticalSepartor33 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD33 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor33.setLayoutData(sepGD33); verticalSepartor33.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//4th group
CustomToolbar custToolBar3333 = new CustomToolbar(compTB3, SWT.FLAT, "Results");
item33333 = new ToolItem(custToolBar3333.getToolBar(), SWT.PUSH);
item33333.setImage(image_floppy_disk); item33333.setText("Save results");
item33333.addListener(SWT.Selection, toolBarListener);
item333333 = new ToolItem(custToolBar3333.getToolBar(), SWT.PUSH);
item333333.setImage(image_gecko); item333333.setText("Save to geck");
item333333.addListener(SWT.Selection, toolBarListener);
//This is the separator
Label verticalSepartor34 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD34 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor34.setLayoutData(sepGD34); verticalSepartor34.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
//5th group
CustomToolbar custToolBar33333 = new CustomToolbar(compTB3, SWT.FLAT, "Next Actions");
item3333333 = new ToolItem(custToolBar33333.getToolBar(), SWT.PUSH);
item3333333.setImage(image_navigate_left2); item3333333.setText("Start over");
item3333333.addListener(SWT.Selection, toolBarListener);
item33333333 = new ToolItem(custToolBar33333.getToolBar(), SWT.PUSH);
item33333333.setImage(image_exit); item33333333.setText("Quit");
item33333333.addListener(SWT.Selection, toolBarListener);
//This is the separator
Label verticalSepartor35 = new Label(compTB3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.VERTICAL);
GridData sepGD35 = new GridData(GridData.FILL_VERTICAL);
verticalSepartor35.setLayoutData(sepGD35); verticalSepartor35.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
Composite compButtons3 = new Composite(compTab3, SWT.NULL);
FillLayout fillLayout3 = new FillLayout();
fillLayout3.type = SWT.HORIZONTAL;
compButtons3.setLayout(fillLayout3);
cTabItem3.setControl(compTab3);
//This is the separator between the toolbar and the text box.
Label horSepartorTab3 = new Label(compTab3, SWT.SEPARATOR | SWT.SHADOW_NONE | SWT.HORIZONTAL);
GridData sepGridDataTab3 = new GridData(GridData.FILL_HORIZONTAL); sepGridDataTab3.horizontalSpan = 5;
horSepartorTab3.setLayoutData(sepGridDataTab3);horSepartorTab3.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
// -----------here ends ALL TABS --------------------
//This is the text box
//GridData txtGridData = new GridData(GridData.FILL_BOTH); txtGridData.horizontalSpan = 2;
//Text txt = new Text(compTab1, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
//txt.setLayoutData(txtGridData);
GridLayout groupLayout = new GridLayout();
GridData groupGD = new GridData(GridData.FILL_BOTH);
Group groupText = new Group(compTab1, SWT.NONE);
groupText.setLayout(groupLayout);
groupText.setLayoutData(groupGD);
groupText.setText("Files in List");
GridData txtGridData = new GridData(GridData.FILL_BOTH);
Text txt = new Text(groupText, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
TxtFocusListener txtFL = new TxtFocusListener(compTab1);
txt.setLayoutData(txtGridData);
txt.addFocusListener(txtFL);
txt.setText(TxtFocusListener.introText); txt.setForeground(compTab1.getDisplay().getSystemColor(SWT.COLOR_GRAY));
shell.addShellListener(new ShellListener() {
public void shellIconified(ShellEvent e) {
}
public void shellDeiconified(ShellEvent e) {
}
public void shellDeactivated(ShellEvent e) {
}
public void shellClosed(ShellEvent e) {
System.out.println("Client Area: " + shell.getClientArea());
}
public void shellActivated(ShellEvent e) {
int frameX = shell.getSize().x - shell.getClientArea().width;
int frameY = shell.getSize().y - shell.getClientArea().height;
shell.setSize(1200 + frameX, 1000 + frameY);
}
});
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}
And this is the RWFile.java:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class RWFile {
private static final String fileName = "psd/swtFile.txt";
public void writeToFile(String content) {
try {
BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
out.write(content);
out.close();
} catch (IOException e) {
System.out.println("writeToFile problem:");
e.printStackTrace();
}
}
public String readFromFile() {
StringBuffer sBuf = new StringBuffer();
try {
BufferedReader br = new BufferedReader(new FileReader(fileName));
String line;
while((line = br.readLine()) != null) {
sBuf.append(line).append("\r\n");
}
br.close();
} catch (IOException e) {
System.out.println("readFromFile problem:");
e.printStackTrace();
}
return sBuf.toString();
}
}
This is the TolbarListener.java:
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolItem;
public class ToolBarListener implements Listener {
private Shell shell;
private Display display;
@Override
public void handleEvent(Event event) {
ToolItem toolItem = (ToolItem) event.widget;
if (toolItem == Gui.item1) {
Gui.selectFileFolders();
}
else if (toolItem == Gui.item11) {
ChangeListDlg chngListDlg = new ChangeListDlg(shell);
chngListDlg.open();
} else if (toolItem == Gui.item13) {
Gui.swichTabChecks();
} else if (toolItem == Gui.item23) {
Gui.swichTabResults();
} else if (toolItem == Gui.item3333333) {
Gui.swichTabFiles();
} else if (toolItem == Gui.item33333333){
try {
if (!shell.isDisposed()) {
shell.close();
shell.dispose();
}
}
finally {
display.dispose();
}
} else if (toolItem == Gui.item111) {
Gui.readTxt();
} else if (toolItem == Gui.item12) {
Gui.writeTxt();
} else if (toolItem == Gui.item1111) {
Gui.clearTxt();
}
}
public void setShell(Shell shell, Display display) {
this.shell = shell;
this.display = display;
}
}
This is the CustomToolbar.java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ToolBar;
public class CustomToolbar extends Composite {
private ToolBar toolBar;
private Label caption;
public CustomToolbar(Composite parent, int style, String toolBarCaption) {
super(parent, style);
Font font = new Font(parent.getDisplay(),"Arial",10,SWT.ITALIC);
final Color lightgray;
lightgray = new Color (parent.getDisplay(), 140, 140, 140);
setLayout(new GridLayout());
toolBar = new ToolBar(this, SWT.FLAT);
//center the icons on each toolbar
GridData tbGD = new GridData(); tbGD.horizontalAlignment = SWT.CENTER;
toolBar.setLayoutData(tbGD);
caption = new Label(this, SWT.HORIZONTAL | SWT.CENTER);
caption.setText(toolBarCaption);
caption.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); // center the caption
caption.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_GRAY));
caption.setForeground(lightgray);
caption.setFont(font);
toolBar.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_GRAY));
setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_GRAY));
}
public ToolBar getToolBar() {
return toolBar;
}
public Label getCaption() {
return caption;
}
}
This is the ChangeListDlg.java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
public class ChangeListDlg extends Dialog {
public ChangeListDlg(Shell parent) {
super(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
}
public String open() {
Shell shell = new Shell(getParent(), getStyle());
shell.setText("Select change list...");
createContents(shell);
shell.pack();
shell.open();
// Move the dialog to the center of the top level shell.
Rectangle shellBounds = getParent().getBounds();
Rectangle dialogSize = shell.getBounds();
shell.setLocation(
shellBounds.x + (shellBounds.width - dialogSize.width) / 2,
shellBounds.y + (shellBounds.height - dialogSize.height) / 2 );
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
return "5";
}
private void createContents(final Shell shell) {
shell.setLayout(new GridLayout(2, true));
Label label = new Label(shell, SWT.NONE);
label.setText("Select from changelists: /examlple 123456 or 134567 or .../");
GridData data = new GridData();
data.horizontalSpan = 2;
label.setLayoutData(data);
final Text text = new Text(shell, SWT.BORDER);
data = new GridData(GridData.FILL_HORIZONTAL);
data.horizontalSpan = 2;
text.setLayoutData(data);
// --------- second row -----------------
Label lbl2 = new Label(shell, SWT.NONE);
lbl2.setText("Or select by username and workspace:");
GridData dtNote = new GridData();
dtNote.horizontalSpan = 2;
lbl2.setLayoutData(dtNote);
Label label211 = new Label(shell, SWT.NONE);
label211.setText("User:");
GridData data211 = new GridData();
label211.setLayoutData(data211);
Label label212 = new Label(shell, SWT.NONE);
label212.setText("Workspace:");
GridData data212 = new GridData();
label212.setLayoutData(data212);
final Text text221 = new Text(shell, SWT.BORDER);
GridData data221 = new GridData(GridData.FILL_HORIZONTAL);
text221.setLayoutData(data221);
final Combo combo222 = new Combo(shell, SWT.READ_ONLY);
String items[] = { "Workspace # One", "Workspace # Two", "Workspace # Three" };
combo222.setItems(items); combo222.select(2);
GridData data222 = new GridData(GridData.FILL_HORIZONTAL);
combo222.setLayoutData(data222);
// ----------- the table -----------------
Table table = new Table(shell, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
table.setHeaderVisible(true);
String[] titles = { "Change", "# Files", "Date / Time", "Description" };
for (int loopIndex = 0; loopIndex < titles.length; loopIndex++) {
TableColumn column = new TableColumn(table, SWT.NULL);
column.setText(titles[loopIndex]);
}
for (int loopIndex = 0; loopIndex < 7; loopIndex++) {
TableItem item = new TableItem(table, SWT.NULL);
item.setText(0, "change list " + loopIndex);
item.setText(1, "" + 2 * loopIndex);
item.setText(2, "01.07.2013 12:34");
item.setText(3, "change list description : " + loopIndex);
if (loopIndex % 2 == 0) item.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
}
for (int loopIndex = 0; loopIndex < titles.length; loopIndex++) {
table.getColumn(loopIndex).pack();
}
GridData data3 = new GridData(GridData.FILL_HORIZONTAL);
data3.horizontalSpan = 2;
table.setLayoutData(data3);
// ----------- third row -----------------
Button ok = new Button(shell, SWT.PUSH);
ok.setText("Add files from this change list");
data = new GridData(GridData.FILL_HORIZONTAL);
ok.setLayoutData(data);
ok.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
shell.close();
}
});
Button cancel = new Button(shell, SWT.PUSH);
cancel.setText("Cancel");
data = new GridData(GridData.FILL_HORIZONTAL);
cancel.setLayoutData(data);
cancel.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
shell.close();
}
});
shell.setDefaultButton(ok);
}
}
Note: My code tries to read a file in the psd folder which locates in the root of the project. However, my main aim is to read any file that is on the machine. So, I want to be able to browse and select the file that I want to read.
I really appreciate for your help,
Posted possible solution in the continuation of this question here:
https://www.experts-exchange.com/questions/28190298/Follow-up-question-about-SWT-to-save-a-text-box-to-a-file.html
Doug
https://www.experts-exchange.com/questions/28190298/Follow-up-question-about-SWT-to-save-a-text-box-to-a-file.html
Doug
http://www.coderanch.com/t/344547/GUI/java/save-information-text-file