/**
* Filename : AccatDlg.java
* Created : Sep 1, 2006 by tcm1998
*/
package org.tcm1998.accat;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
* @author tcm1998
*
*/
public class AccatDlg {
private final static int CATAGORYBUTTONS = 16;
public final static int ALPHALIST = 0;
public final static int NOOKLIST = 1;
public final static int ACCLIST = 2;
public final static int GAME_GC = 0;
public final static int GAME_DS = 1;
public final static int GAME_WII = 2;
private int listedItems;
private int totalItemsInCatagories;
private int availableItems;
private String m_basePath;
private ArrayList CurrentCatagories;
private int iCurrentList = ALPHALIST;
private int iCurrentGame = GAME_DS;
private String currentFilename = null;
private String currentFilepath = null;
private boolean isWindows = false;
private boolean bModified = false;
private boolean expanded;
// private ExportDlg exportwnd;
private FilterDlg filterwnd;
private HashMap itemIDs;
private BaseItemCollection itemColl;
private PlayerData player;
private OrderedItemCollection orderedItems[];
private ItemFilter itemfilter;
private Settings accatSettings;
private Shell m_shell;
private Display m_display;
private Tree itemTree;
private Composite displayEditPanel;
private Composite infoPanel;
private Composite amountPanel;
private Composite findPanel;
private Group buttonPanel;
private Group displayPanel;
private Group editPanel;
private Group itemInfoPanel;
private Group priceInfoPanel;
private Group picturePanel;
private Label treeHead;
private Label amountLabel;
private StyledText infoLine1a;
private StyledText infoLine1b;
private StyledText infoLine2;
private StyledText infoLine3;
private StyledText infoLine4;
private StyledText infoLine5;
private StyledText infoLine6;
private StyledText priceLineNook;
private StyledText priceLineRedd;
private StyledText priceLineSell;
private StyledText priceLineUnorderable;
private Label picture;
private Label orderLabel;
private Label filterLabel;
private Label findLabel;
private Button toggleButton;
private Button markAvailButton;
private Button markMissingButton;
private Button wishListButton;
private Button showMissingCheck;
private Button showAvailCheck;
private Button showCatCheck;
private Button filterCheck;
private Button expandButton;
private Button catButtons[];
private Button filterButton;
private Button nextButton;
private Button extendCatagories;
private Image itemPicture;
private Point minimumDlgSize;
private Text findText;
private Text amountText;
private Combo orderCombo;
private MenuItem itemRecent; // to be able to update the recent files
private GridData infoPanelLayoutData;
public AccatDlg()
{
String osname = System.getProperty("os.name");
if (osname.startsWith("Win"))
{
isWindows = true;
}
itemPicture = null;
itemIDs = new HashMap();
CurrentCatagories = new ArrayList();
itemColl = new BaseItemCollection();
orderedItems = new OrderedItemCollection[3];
accatSettings = new Settings();
orderedItems[NOOKLIST] = new OrderedItemCollection("nook_itemlist_wii_temp.txt",itemColl);
orderedItems[ACCLIST] = new OrderedItemCollection("acc_itemlist_wii_temp.txt", itemColl);
orderedItems[ALPHALIST] = new OrderedItemCollection("alpha_itemlist_wii_temp.txt",itemColl);
itemfilter = new ItemFilter("");
player = new PlayerData(itemColl,itemColl.GetAccatIds());
}
private void Create(Display display){
m_shell = new Shell(display);
m_shell.setImage(new Image(display,org.tcm1998.utils.ResourceUtils.openBinaryResource("nook.png")));
m_shell.addShellListener(new ShellAdapter(){
public void shellClosed(ShellEvent e) {
onClose(e);
}
});
m_shell.addListener(FilterDlg.EVENT_UPDATE, new Listener(){
public void handleEvent(Event e) {
onFilterUpdated();
}
});
m_display = display;
CreateUserControls();
SetupLayout();
initialiseUserControls();
CreateMenu (m_shell);
CreateListeners();
updateTitle();
infoPanel.setSize(0,0);
expanded = false;
Point loc = accatSettings.getLocation();
if ((loc.x | loc.y) != 0)
{
m_shell.setLocation(loc);
}
}
void CreateUserControls()
{
new Label(m_shell,SWT.NONE);
treeHead = new Label(m_shell,SWT.NONE);
new Label(m_shell,SWT.NONE);
buttonPanel = new Group(m_shell,SWT.NONE);
itemTree = new Tree(m_shell,SWT.BORDER | SWT.SINGLE | SWT.CHECK | SWT.V_SCROLL);
displayEditPanel = new Composite(m_shell, SWT.NONE);
displayPanel = new Group (displayEditPanel,SWT.NONE);
orderLabel = new Label(displayPanel,SWT.NONE);
orderCombo = new Combo(displayPanel,SWT.READ_ONLY);
filterLabel = new Label(displayPanel, SWT.NONE);
showCatCheck = new Button (displayPanel, SWT.CHECK);
showAvailCheck = new Button (displayPanel, SWT.CHECK);
showMissingCheck = new Button (displayPanel, SWT.CHECK);
filterCheck = new Button (displayPanel, SWT.CHECK);
filterButton = new Button (displayPanel,SWT.PUSH);
editPanel = new Group (displayEditPanel, SWT.NONE);
toggleButton = new Button (editPanel,SWT.RADIO);
markAvailButton = new Button (editPanel,SWT.RADIO);
markMissingButton = new Button (editPanel,SWT.RADIO);
wishListButton = new Button (editPanel,SWT.RADIO);
amountPanel = new Composite(displayEditPanel,SWT.NONE);
amountLabel = new Label(amountPanel,SWT.NONE);
amountText = new Text(amountPanel,SWT.NONE);
findPanel = new Composite(m_shell,SWT.NONE);
findLabel = new Label(findPanel,SWT.NONE);
findText = new Text(findPanel,SWT.NONE);
nextButton = new Button(findPanel,SWT.PUSH);
expandButton = new Button(m_shell,SWT.PUSH);
extendCatagories = new Button(m_shell,SWT.CHECK);
new Label(m_shell,SWT.NONE);
new Label(m_shell,SWT.NONE);
catButtons = new Button[CATAGORYBUTTONS];
for (int btn = 0; btn<CATAGORYBUTTONS;btn++)
{
catButtons[btn] = new Button(buttonPanel,SWT.PUSH);
}
infoPanel = new Composite (m_shell,SWT.NONE);
Color backColor = infoPanel.getBackground();
itemInfoPanel = new Group (infoPanel,SWT.NONE);
infoLine1a = new StyledText(itemInfoPanel,SWT.NONE);
infoLine1a.setBackground(infoPanel.getBackground());
infoLine1b = new StyledText(itemInfoPanel,SWT.NONE);
infoLine2 = new StyledText(itemInfoPanel,SWT.NONE);
infoLine3 = new StyledText(itemInfoPanel,SWT.NONE);
infoLine4 = new StyledText(itemInfoPanel,SWT.NONE);
infoLine5 = new StyledText(itemInfoPanel, SWT.NONE);
infoLine6 = new StyledText(itemInfoPanel, SWT.NONE);
priceInfoPanel = new Group (infoPanel,SWT.NONE);
priceLineNook = new StyledText(priceInfoPanel,SWT.NONE);
priceLineRedd = new StyledText(priceInfoPanel,SWT.NONE);
new Label(priceInfoPanel,SWT.NONE);
priceLineSell = new StyledText(priceInfoPanel,SWT.NONE);
new Label(priceInfoPanel,SWT.NONE);
priceLineUnorderable = new StyledText (priceInfoPanel, SWT.NONE);
picturePanel = new Group (infoPanel,SWT.NONE);
picture = new Label(picturePanel,SWT.NONE);
infoLine1a.setBackground(backColor);
infoLine1b.setBackground(backColor);
infoLine2.setBackground(backColor);
infoLine3.setBackground(backColor);
infoLine4.setBackground(backColor);
infoLine5.setBackground(backColor);
infoLine6.setBackground(backColor);
priceLineNook.setBackground(backColor);
priceLineRedd.setBackground(backColor);
priceLineSell.setBackground(backColor);
priceLineUnorderable.setBackground(backColor);
}
void SetupLayout()
{
GridLayout mainWndLayout = new GridLayout();
GridLayout displayEditPanelLayout = new GridLayout();
GridLayout displayPanelLayout = new GridLayout();
GridLayout amountPanelLayout = new GridLayout();
GridLayout findPanelLayout = new GridLayout();
GridLayout infoPanelLayout = new GridLayout();
GridLayout itemInfoPanelLayout = new GridLayout();
GridLayout editPanelLayout = new GridLayout ();
GridLayout priceInfoPanelLayout = new GridLayout();
FillLayout butonPanelLayout = new FillLayout();
FillLayout pictureLayout = new FillLayout();
GridData buttonPanelLayoutData = new GridData(SWT.BEGINNING,SWT.BEGINNING,false,false);
GridData itemTreeLayoutData = new GridData(SWT.FILL,SWT.FILL,true, true);
GridData displayEditPanelLayoutData = new GridData (SWT.BEGINNING,SWT.BEGINNING,false,false);
GridData displayPanelLayoutData = new GridData(SWT.BEGINNING,SWT.BEGINNING,false,false);
GridData orderComboLayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData filterLabelLayoutData = new GridData(SWT.BEGINNING,SWT.BEGINNING,false,false);
GridData showCatCheckLayoutData = new GridData();
GridData showAvailCheckLayoutData = new GridData();
GridData showMissingCheckLayoutData = new GridData();
GridData editPanelLayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData amountPanelLayoutData = new GridData(SWT.FILL,SWT.CENTER,true,false);
GridData amountTextLayoutData = new GridData(SWT.BEGINNING,SWT.CENTER,true,false);
GridData findPanelLayoutData = new GridData(SWT.FILL,SWT.CENTER,true,false);
GridData findTextLayoutData = new GridData(SWT.FILL,SWT.CENTER,true,false);
GridData expandButtonLayoutData = new GridData(SWT.END,SWT.CENTER,false,false);
infoPanelLayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData itemInfoPanelLayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData infoLine1aLayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData infoLine2LayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData infoLine3LayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData infoLine4LayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData infoLine5LayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData infoLine6LayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData priceInfoPanelLayoutData = new GridData(SWT.BEGINNING,SWT.BEGINNING,false,false);
GridData PriceLineNookLayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData priceLineReddLayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData priceLineSellLayoutData = new GridData(SWT.FILL,SWT.BEGINNING,true,false);
GridData picturePanelLayoutData = new GridData(SWT.BEGINNING,SWT.FILL,false,true);
int catButtonSpacing = 0;
int itemListLength = 21;
if (!isWindows)
{
catButtonSpacing = -19;
itemListLength = 15;
}
mainWndLayout.numColumns = 3;
butonPanelLayout.type = SWT.VERTICAL;
butonPanelLayout.spacing = catButtonSpacing;
displayEditPanelLayout.numColumns = 1;
displayPanelLayout.numColumns = 3;
editPanelLayout.numColumns = 1;
amountPanelLayout.numColumns = 3;
findPanelLayout.numColumns = 3;
infoPanelLayout.numColumns = 3;
itemInfoPanelLayout.numColumns = 2;
priceInfoPanelLayout.numColumns = 1;
buttonPanelLayoutData.verticalSpan = 15;
itemTreeLayoutData.heightHint = itemTree.getItemHeight()*itemListLength;
itemTreeLayoutData.grabExcessHorizontalSpace = true;
itemTreeLayoutData.verticalSpan = 14;
displayEditPanelLayoutData.verticalSpan = 14;
orderComboLayoutData.horizontalSpan =2;
filterLabelLayoutData.verticalSpan = 4;
showCatCheckLayoutData.horizontalSpan =2;
showAvailCheckLayoutData.horizontalSpan =2;
showMissingCheckLayoutData.horizontalSpan =2;
infoPanelLayoutData.horizontalSpan = 3;
infoLine2LayoutData.horizontalSpan = 2;
infoLine3LayoutData.horizontalSpan = 2;
infoLine4LayoutData.horizontalSpan = 2;
infoLine5LayoutData.horizontalSpan = 2;
infoLine6LayoutData.horizontalSpan = 2;
infoPanelLayoutData.exclude = true; // don't show info panel yet
m_shell.setLayout(mainWndLayout);
buttonPanel.setLayout(butonPanelLayout);
displayEditPanel.setLayout(displayEditPanelLayout);
displayPanel.setLayout(displayPanelLayout);
editPanel.setLayout(editPanelLayout);
amountPanel.setLayout(amountPanelLayout);
findPanel.setLayout(findPanelLayout);
infoPanel.setLayout(infoPanelLayout);
itemInfoPanel.setLayout(itemInfoPanelLayout);
priceInfoPanel.setLayout(priceInfoPanelLayout);
picturePanel.setLayout(pictureLayout);
buttonPanel.setLayoutData(buttonPanelLayoutData);
itemTree.setLayoutData(itemTreeLayoutData);
displayEditPanel.setLayoutData(displayEditPanelLayoutData);
displayPanel.setLayoutData(displayPanelLayoutData);
orderCombo.setLayoutData(orderComboLayoutData);
filterLabel.setLayoutData(filterLabelLayoutData);
showCatCheck.setLayoutData(showCatCheckLayoutData);
showAvailCheck.setLayoutData(showAvailCheckLayoutData);
showMissingCheck.setLayoutData(showMissingCheckLayoutData);
editPanel.setLayoutData(editPanelLayoutData);
amountPanel.setLayoutData(amountPanelLayoutData);
amountText.setLayoutData(amountTextLayoutData);
findPanel.setLayoutData(findPanelLayoutData);
findText.setLayoutData(findTextLayoutData);
expandButton.setLayoutData(expandButtonLayoutData);
infoPanel.setLayoutData(infoPanelLayoutData);
itemInfoPanel.setLayoutData(itemInfoPanelLayoutData);
infoLine1a.setLayoutData(infoLine1aLayoutData);
infoLine2.setLayoutData(infoLine2LayoutData);
infoLine3.setLayoutData(infoLine3LayoutData);
infoLine4.setLayoutData(infoLine4LayoutData);
infoLine5.setLayoutData(infoLine5LayoutData);
infoLine6.setLayoutData(infoLine6LayoutData);
priceInfoPanel.setLayoutData(priceInfoPanelLayoutData);
priceLineNook.setLayoutData(PriceLineNookLayoutData);
priceLineRedd.setLayoutData(priceLineReddLayoutData);
priceLineSell.setLayoutData(priceLineSellLayoutData);
picturePanel.setLayoutData(picturePanelLayoutData);
}
void initialiseUserControls()
{
UpdateButtons();
extendCatagories.setText("Extend categories");
priceLineNook.setText("Nook: Not selling!");
treeHead.setText("Furniture (0/562)");
findLabel.setText("Find");
nextButton.setText("Next");
buttonPanel.setText("Categories");
displayPanel.setText(" Display mode");
orderLabel.setText("Order:");
filterLabel.setText("Filter:");
showCatCheck.setText("Show Catagories");
showCatCheck.setSelection(accatSettings.getShowCatagories());
showAvailCheck.setText("Show Available Only");
showAvailCheck.setSelection(accatSettings.getShowAvailable());
showMissingCheck.setText("Show Missing Only");
showMissingCheck.setSelection(accatSettings.getShowMissing());
filterCheck.setText("Filter");
editPanel.setText("Edit mode");
filterButton.setText("Define ...");
toggleButton.setText("Toggle item");
markAvailButton.setText("Mark item as available");
markMissingButton.setText("Mark item as missing");
wishListButton.setText("Place item in wishlist");
amountLabel.setText("Amount (0-31)");
expandButton.setText("Show Item Info >>>");
picture.setImage(new Image(m_display,org.tcm1998.utils.ResourceUtils.openBinaryResource("no_pic.png")));
orderCombo.add("Alphabetical");
orderCombo.add("Nooks order");
orderCombo.add("ACC Order");
orderCombo.select(accatSettings.getSortOrder());
toggleButton.setSelection(true);
// temp code
// expandButton.setVisible(false);
filterButton.setVisible(false);
filterCheck.setVisible(false);
showCatCheck.setVisible(false);
}
private void UpdateButtons()
{
String[] names = orderedItems[iCurrentList].GetCatagories();
for (int btn = 0; btn<CATAGORYBUTTONS;btn++)
{
if (btn<names.length)
{
catButtons[btn].setText(names[btn].replaceAll("&","&&"));
catButtons[btn].setVisible(true);
}
else
{
catButtons[btn].setVisible(false);
}
}
}
void CreateListeners()
{
itemTree.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onSelectItem(evt);
}
});
orderCombo.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onChangeListOrder(evt.widget);
}
});
showCatCheck.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onUpdateList();
}
});
showAvailCheck.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onShowAvailable();
}
});
showMissingCheck.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onShowMissing();
}
});
filterCheck.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onUpdateList();
}
});
filterButton.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onFilter();
}
});
amountText.addModifyListener(new ModifyListener(){
public void modifyText(ModifyEvent evt){
setAmount(evt);
}
});
findText.addModifyListener(new ModifyListener(){
public void modifyText(ModifyEvent evt){
findItemByText(((Text)evt.widget).getText(),false);
}
});
nextButton.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onFindNext();
}
});
expandButton.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onHandleExpandButton();
}
});
for (int btn = 0; btn<CATAGORYBUTTONS;btn++)
{
catButtons[btn].addSelectionListener (new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onHandleCatagoryButton(evt.widget);
}
}
);
}
}
void CreateMenu (Shell shell){
Menu menu = new Menu(shell, SWT.BAR);
shell.setMenuBar(menu);
MenuItem fileItem = new MenuItem(menu,SWT.CASCADE);
fileItem.setText("&File");
Menu fileMenu = new Menu(shell,SWT.DROP_DOWN);
fileItem.setMenu(fileMenu);
MenuItem itemNew = new MenuItem(fileMenu,SWT.PUSH);
MenuItem itemLoad = new MenuItem(fileMenu,SWT.PUSH);
itemRecent = new MenuItem(fileMenu,SWT.CASCADE);
MenuItem itemSave = new MenuItem(fileMenu,SWT.PUSH);
MenuItem itemSaveAs = new MenuItem(fileMenu,SWT.PUSH);
//MenuItem itemExport = new MenuItem(fileMenu,SWT.PUSH);
new MenuItem(fileMenu,SWT.SEPARATOR);
MenuItem itemExit = new MenuItem(fileMenu, SWT.PUSH);
itemNew.setText("&New");
itemLoad.setText("&Open ...");
itemRecent.setText("&Recent files");
itemSave.setText("&Save");
itemSaveAs.setText("Save &As ...");
//itemExport.setText("Ex&port Data...");
itemExit.setText("E&xit");
BuildRecentMenu();
itemNew.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onNewFile();
}
});
itemLoad.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onLoadFile();
}
});
itemSave.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onSaveFile();
}
});
itemSaveAs.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onSaveFileAs();
}
});
// itemExport.addSelectionListener(new SelectionAdapter(){
// public void widgetSelected(SelectionEvent evt){
// onExport();
// }
// });
//
itemExit.addSelectionListener (new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
onExit();
}
});
}
public Shell InitShell(Display display){
m_basePath = org.tcm1998.utils.ResourceUtils.getProgramPath("no_pic.png");
Create (display);
extendCatagories.setSelection(false);
onHandleCatagoryButton(catButtons[0]);
onUpdateList();
minimumDlgSize = m_shell.getMinimumSize();
// exportwnd = new ExportDlg(m_shell,0);
filterwnd = new FilterDlg(m_shell,0);
m_shell.open();
while (!m_shell.isDisposed())
if(!m_display.readAndDispatch())
m_display.sleep();
return m_shell;
}
private void onShowAvailable(){
showMissingCheck.setSelection(false);
accatSettings.setShowAvailable(showAvailCheck.getSelection());
accatSettings.setShowMissing(false);
onUpdateList();
}
private void onShowMissing(){
showAvailCheck.setSelection(false);
accatSettings.setShowMissing(showMissingCheck.getSelection());
accatSettings.setShowAvailable(false);
onUpdateList();
}
private void onUpdateList(){
accatSettings.setShowCatagories(showCatCheck.getSelection());
//accatSettings.setUsefilter(filterCheck.getSelection());
fillItemList(/*iCurrentCatagory*/);
updateHeader();
itemTree.setFocus();
}
private void fillItemList(/*int p_iCatagory*/){
itemTree.setRedraw(false);
listedItems = 0;
int itemFilteredOutByCatagory = 0;
availableItems= 0;
boolean showGroups = showCatCheck.getSelection();
String lastGroup="";
String currentGroup = "";
TreeItem lastGroupItem = null;
TreeItem item;
byte avail;
itemTree.removeAll();
int iNumItems = orderedItems[iCurrentList].GetNumberOfItems(/*p_iCatagory*/);
for (int x=0;x < iNumItems; x++){
int id = orderedItems[iCurrentList].GetBaseItemID(x);
avail = player.GetAvailabilty(id);
int filterType = isItemFiltered(x);
switch (filterType){
case 0: // not filtered
listedItems++;
if (showGroups){
currentGroup = orderedItems[iCurrentList].GetGroupName(x);
if (currentGroup != lastGroup){
lastGroup = currentGroup;
if (lastGroupItem != null){
updateItemParent(lastGroupItem.getItem(0));
lastGroupItem.setExpanded(true);
}
lastGroupItem = new TreeItem(itemTree,SWT.NULL);
lastGroupItem.setText(lastGroup);
}
item = new TreeItem(lastGroupItem,SWT.NULL);
}
else {
item = new TreeItem(itemTree,SWT.NULL);
itemIDs.put(item, new Integer(id));
}
//int itemindex = itemColl.GetIndex(orderedItems[iCurrentList].GetBaseItemID(x));
//item.setText(itemColl.GetItemName(itemindex));
item.setText(itemColl.GetItemName(id));
if (itemColl.IsUnOrderable(id)){
//if (itemColl.IsUnOrderable(itemindex)){
Font font = item.getFont();
FontData fontdata[] = font.getFontData();
fontdata[0].setStyle(SWT.BOLD);
Font newFont = new Font(m_display,fontdata[0]);
item.setFont(newFont);
}
switch (avail & 3){
case PlayerData.NOT_AVAILABLE:
item.setChecked(false);
item.setGrayed(false);
break;
case PlayerData.AVAILABLE:
item.setChecked(true);
item.setGrayed(false);
break;
case PlayerData.WISHLIST:
item.setChecked(true);
item.setGrayed(true);
}
break;
case 1:
break;
case 2: // catagory filter
itemFilteredOutByCatagory++;
break;
}
if ((avail == PlayerData.AVAILABLE) && (filterType !=2)){
availableItems++;
}
} // end for
totalItemsInCatagories = iNumItems - itemFilteredOutByCatagory;
if (showGroups){
updateItemParent(lastGroupItem.getItem(0));
lastGroupItem.setExpanded(true);
}
itemTree.setRedraw(true);
m_shell.pack();
m_shell.setMinimumSize(m_shell.getSize());
}
private void updateItemParent (TreeItem item){
boolean allChecked = true;
boolean someChecked = false;
boolean checked = false;
TreeItem parentItem = item.getParentItem();
if (parentItem != null){
TreeItem items[] = parentItem.getItems();
for (int idx = 0;idx < items.length;idx++){
checked = items[idx].getChecked();
allChecked &= checked;
someChecked |= checked;
}
parentItem.setChecked(someChecked);
parentItem.setGrayed(someChecked & !allChecked);
}
}
private void updateChilds (TreeItem item, byte avail){
int count = item.getItemCount();
if (count >0){
boolean grayed = item.getGrayed();
boolean checked = item.getChecked();
for (int idx = 0;idx < count; idx++){
int id = itemColl.FindItemId(item.getItem(idx).getText());
item.getItem(idx).setGrayed(grayed);
item.getItem(idx).setChecked(checked);
if (id != -1){
int oldAvail = player.GetAvailabilty(id);
player.SetAvailability(id, avail);
if (avail != oldAvail){
bModified = true;
updateTitle();
}
if ((avail == PlayerData.AVAILABLE) & (oldAvail != PlayerData.AVAILABLE)){
availableItems++;
}
if ((avail != PlayerData.AVAILABLE) & (oldAvail == PlayerData.AVAILABLE)){
availableItems--;
}
}
}
}
}
private void updateHeader(){
String header;
int numTotal = totalItemsInCatagories;
header = /*itemColl.GetCatagoryName(iCurrentCatagory) + */
" (" + availableItems + "/" + numTotal + ")";
if (listedItems != numTotal){
header += " Listed:" + listedItems;
}
treeHead.setText(header);
treeHead.pack();
}
private int isItemFiltered(int item){
int retVal = 0;
byte avail = player.GetAvailabilty(orderedItems[iCurrentList].GetBaseItemID(item));
if ((showAvailCheck.getSelection()) && (avail != PlayerData.AVAILABLE)){
retVal = 1;
}
if ((showMissingCheck.getSelection()) && (avail == PlayerData.AVAILABLE)){
retVal = 1;
}
if ((filterCheck.getSelection()) && (itemColl.IsFiltered(item,BaseItemCollection.FILTER_PRIOS-1)))
{
retVal = 1;
}
if (orderedItems[iCurrentList].IsFiltered(item))
{
retVal = 2;
}
return retVal;
}
private void onHandleCatagoryButton(Widget item){
int btn = -1;
for (int i =0;i < CATAGORYBUTTONS;i++){
if (item.equals(catButtons[i])){
btn = i;
}
}
if (btn != -1)
{
boolean add = !(CurrentCatagories.contains(new Integer(btn)));
//iCurrentCatagory = btn;
Font font = catButtons[btn].getFont();
FontData fontdata[] = font.getFontData();
fontdata[0].setStyle(SWT.NORMAL);
Font fontNormal = new Font(m_display,fontdata[0]);
fontdata[0].setStyle(SWT.BOLD | SWT.ITALIC);
Font fontBI = new Font(m_display, fontdata[0]);
if (!extendCatagories.getSelection())
{
for (int i=0; i<CurrentCatagories.size();i++)
{
catButtons[((Integer)CurrentCatagories.get(i)).intValue()].setFont(fontNormal);
}
CurrentCatagories.clear();
}
if (add)
{
CurrentCatagories.add(new Integer(btn));
catButtons[btn].setFont(fontBI);
}
else
{
CurrentCatagories.remove(new Integer(btn));
catButtons[btn].setFont(fontNormal);
}
ItemFilter filter = new ItemFilter("test");
for (int cat = 0; cat < CurrentCatagories.size();cat++)
{
filter.addCriteria("CT",new int[]{((Integer)(CurrentCatagories.get(cat))).intValue()+1},false);
}
orderedItems[iCurrentList].doFilter(filter);
onUpdateList();
}
m_shell.pack();
}
private void onHandleExpandButton(){
int vspace = ((GridLayout)m_shell.getLayout()).verticalSpacing;
expanded = !expanded;
if (expanded){
m_shell.setRedraw(false);
infoPanelLayoutData.exclude = false;
Point totalSize = m_shell.getSize();
m_shell.layout();
Point infoPanelSize = infoPanel.getSize();
m_shell.setMinimumSize(totalSize.x, totalSize.y+infoPanelSize.y + vspace);
m_shell.pack();
m_shell.setMinimumSize(minimumDlgSize.x, minimumDlgSize.y + infoPanelSize.y + vspace);
expandButton.setText("<<< Hide Item Info");
m_shell.setRedraw(true);
}
else{
expandButton.setText("Show Item Info >>>");
infoPanelLayoutData.exclude = true;
Point infoPanelSize = infoPanel.getSize();
infoPanel.setSize(0, 0);
Point totalSize = m_shell.getSize();
m_shell.setMinimumSize(totalSize.x,totalSize.y-infoPanelSize.y - vspace);
m_shell.pack();
m_shell.setMinimumSize(minimumDlgSize);
}
}
private void onChangeListOrder(Widget widget){
iCurrentList = ((Combo)widget).getSelectionIndex();
UpdateButtons();
accatSettings.setSortOrder(iCurrentList);
ItemFilter filter = new ItemFilter("test");
for (int cat = 0; cat < CurrentCatagories.size();cat++)
{
filter.addCriteria("CT",new int[]{((Integer)(CurrentCatagories.get(cat))).intValue()+1},false);
}
orderedItems[iCurrentList].doFilter(filter);
onUpdateList();
}
private void onSelectItem(SelectionEvent evt){
TreeItem treeitem = (TreeItem)evt.item;
int id = ((Integer)itemIDs.get(treeitem)).intValue();
byte oldAvail = PlayerData.NOT_AVAILABLE;
byte avail = PlayerData.NOT_AVAILABLE;
if ((evt.detail & SWT.CHECK) != 0){
if (markAvailButton.getSelection()){
treeitem.setGrayed(false);
treeitem.setChecked(true);
avail = PlayerData.AVAILABLE;
}
else if (markMissingButton.getSelection()){
treeitem.setGrayed(false);
treeitem.setChecked(false);
avail = PlayerData.NOT_AVAILABLE;
}
else if (wishListButton.getSelection()){
treeitem.setChecked(true);
treeitem.setGrayed(true);
avail = PlayerData.WISHLIST;
}
else{ // toggle item
treeitem.setGrayed(false);
avail = (treeitem.getChecked()?PlayerData.AVAILABLE:PlayerData.NOT_AVAILABLE);
}
updateItemParent(treeitem);
updateChilds(treeitem, avail);
if (id != -1){
oldAvail = player.GetAvailabilty(id);
player.SetAvailability(id, avail);
if (avail != oldAvail){
bModified = true;
updateTitle();
}
if ((avail == PlayerData.AVAILABLE) & (oldAvail != PlayerData.AVAILABLE)){
availableItems++;
}
if ((avail != PlayerData.AVAILABLE) & (oldAvail == PlayerData.AVAILABLE)){
availableItems--;
}
}
updateHeader();
}
else{
if (id != -1){
amountText.setVisible(true);
amountLabel.setVisible(true);
//int amount = player.GetAmount(itemColl.GetIndex(orderedItems[iCurrentList].GetBaseItemID(index)));
int amount = player.GetAmount(id);
amountText.setText(Integer.toString(amount));
displayItemInfo(id);
}
else{
amountText.setVisible(false);
amountLabel.setVisible(false);
}
}
}
void displayStyledText(StyledText label, String text)
{
int count = 0;
int pos = text.indexOf('*');
while (pos != -1)
{
count++;
pos = text.indexOf('*', pos+1);
}
StyleRange[] ranges = new StyleRange[count];
pos = text.indexOf('*');
int index = 0;
while (pos != -1)
{
int r = 0;
int g = 0;
int b = 0;
switch(text.charAt(pos+1))
{
case 'G':
r = 0; g = 128; b = 0;
break;
case 'Y':
r = 200; g = 200; b = 0;
break;
case 'R':
r = 255; g = 0; b = 0;
break;
}
int pos2 = text.indexOf('#',pos+1);
text = text.substring(0, pos) + text.substring(pos+1, pos2) + text.substring(pos2+1);
Color color = new Color(m_display,r,g,b);
ranges[index] = new StyleRange(pos,pos2-pos-1,color,infoPanel.getBackground(),SWT.BOLD);
//color.dispose();
index++;
pos = text.indexOf('*');
}
label.setText(text);
label.setStyleRanges(ranges);
}
void displayItemInfo(int id)
{
infoLine1a.setText("");
infoLine1b.setText("");
infoLine2.setText("");
infoLine3.setText("");
infoLine4.setText("");
infoLine5.setText("");
infoLine6.setText("");
priceLineNook.setText("");
priceLineRedd.setText("");
priceLineSell.setText("");
String temp;
infoLine1a.setText(itemColl.GetItemName(id));
String catagories[] = {"furniture","wallpaper","carpets","clothing","umbrellas","accessories","stationery","gyroids",
"fossils","music","fish","insects","patterns","paintings","tools","flowers"};
int catIdx = -1;
String catName = orderedItems[iCurrentList].GetCatagoryName(id);
for (int iCat = 0; iCat < catagories.length;iCat++)
{
if (catagories[iCat].equals(catName))
{
catIdx = iCat;
}
}
switch (catIdx)
{
case -1:
break; // error
case 0: // furniture
case 13: // paintings
//infoLine1b.setText("Group: " + itemColl.GetItemGroup(id));
temp = itemColl.GetItemSet(id);
if ((!temp.equals("")) && (!temp.equals("0"))){
infoLine2.setText("Part of: " + temp);
}
infoLine3.setText(blockIfEmpty(itemColl.GetItemAvailability(id),"Available: "));
displayStyledText(infoLine4, "Colors: " + itemColl.GetColours(id));
infoLine1b.setText("Size: " + Integer.toString(itemColl.GetItemSize(id)));
infoLine5.setText(itemColl.GetLucky(id).equals("1") ? "Lucky" : "");
infoLine6.setText("Genre: " + itemColl.GetGenre(id));
break;
case 1: // wallpaper
case 2: // carpets
infoLine1b.setText("Group: " + itemColl.GetItemGroup(id));
temp = itemColl.GetItemSet(id);
if ((!temp.equals("")) && (!temp.equals("0"))){
infoLine2.setText("Part of: " + temp);
}
infoLine3.setText(blockIfEmpty(itemColl.GetItemAvailability(id),"Available: "));
break;
case 3: // clothing
infoLine1b.setText("Group: " + itemColl.GetItemGroup(id));
infoLine2.setText(blockIfEmpty(itemColl.GetItemAvailability(id),"Available: "));
//infoLine3.setText("Season: " + itemColl.GetMonths(id));
infoLine3.setText("Season:" + itemColl.GetItemPropertyText(id, "Season"));
break;
case 4: // umbrella's
case 5: // accessories
case 6: // stationery
case 12: // patterns
case 14: // tools
{
String delimiters = ", ";
String avail = blockIfEmpty(itemColl.GetItemAvailability(id),"Available: ");
String backAvail = avail;
Rectangle r = infoLine2.getBounds();
GC gc = new GC(infoLine2);
Point p2 = gc.textExtent(avail);
while (p2.x > r.width)
{
int lastIdx = 0;
for (int iDelimited = 0; iDelimited < delimiters.length();iDelimited++)
{
int idx = avail.substring(0,avail.length()-1).lastIndexOf(delimiters.charAt(iDelimited));
if (idx > lastIdx)
{
lastIdx = idx;
}
}
avail = avail.substring(0, lastIdx+1);
p2 = gc.textExtent(avail);
}
gc.dispose();
infoLine2.setText(backAvail.substring(0,avail.length()));
infoLine3.setText(backAvail.substring(avail.length()));
}
break;
case 7: // gyroids
temp = itemColl.GetItemSet(id);
if ((!temp.equals("")) && (!temp.equals("0"))){
infoLine2.setText("Part of: " + temp);
}
infoLine3.setText(blockIfEmpty(itemColl.GetItemAvailability(id),"Available: "));
break;
case 8: // fossils
infoLine2.setText(blockIfEmpty(itemColl.GetItemAvailability(id),"Available: "));
break;
case 10: // fish
case 11: // insects
infoLine2.setText(blockIfEmpty(itemColl.GetItemAvailability(id),"Available: "));
//infoLine3.setText("Season: " + itemColl.GetMonths(id));
infoLine3.setText("Season:" + itemColl.GetItemPropertyText(id, "Season"));
infoLine4.setText("Time: " + itemColl.GetTOD(id));
//infoLine5.setText(blockIfEmpty(itemColl.GetPeakMonths(id),"Peak Season: "));
infoLine5.setText(blockIfEmpty(itemColl.GetItemPropertyText(id, "PeakSeason"),"Peak Season: "));
infoLine6.setText(blockIfEmpty(itemColl.GetPeakTOD(id), "Peak time: "));
break;
case 9: // Music
infoLine2.setText("Available: The Roost (Saturdays 8PM-Midnight)");
break;
case 15: // F&F
infoLine2.setText(blockIfEmpty(itemColl.GetItemAvailability(id),"Available: "));
break;
case 16: // Pictures (disabled)
infoLine2.setText(blockIfEmpty(itemColl.GetItemAvailability(id),"Available: "));
infoLine3.setText(blockIfEmpty(itemColl.GetItemSet(id), "Species: "));
temp = itemColl.GetItemGroup(id);
if (temp != "-"){
infoLine4.setText(blockIfEmpty(temp, "Personality: "));
}
//infoLine5.setText(blockIfEmpty(itemColl.getBirthday(id),"Birthday: "));
break;
case 17: // Special (disabled)
infoLine2.setText(blockIfEmpty(itemColl.GetItemAvailability(id),"Available: "));
infoLine1b.setText("Size: " + Integer.toString(itemColl.GetItemSize(id)));
break;
}
int nookPrice = itemColl.GetItemNormalPrice(id);
if (nookPrice != 0){
priceLineNook.setText("Nook: " + Integer.toString(nookPrice));
if (itemColl.IsUnOrderable(id)){
priceLineUnorderable.setText("Not orderable!");
}
else{
priceLineUnorderable.setText("");
}
}
else{
priceLineNook.setText("Nook: Not selling!");
priceLineUnorderable.setText("");
}
int reddPrice = itemColl.GetItemReddPrice(id);
if (reddPrice != 0){
priceLineRedd.setText("Redd: " + Integer.toString(reddPrice));
}
else{
priceLineRedd.setText("Redd: -");
}
int sellPrice = itemColl.GetItemSellPrice(id);
if (sellPrice != -1){
priceLineSell.setText("Sell value: " + Integer.toString(sellPrice));
}
else{
priceLineSell.setText("Sell value: ???");
}
displayItemPicture (id);
infoPanel.layout();
}
private void displayItemPicture (int id){
String catName = itemColl.GetCatagoryName(orderedItems[iCurrentList].GetCatagory(id));
String itemName = itemColl.GetItemName(id);
itemName = itemName.replaceAll("/","-");
String picturePath = m_basePath + "images/" + catName + "/" + itemName + ".png";
File pictureFile = new File(picturePath);
if (itemPicture != null)
{
itemPicture.dispose();
}
if (pictureFile.exists()){
itemPicture = new Image(m_display,picturePath);
}
else{
itemPicture = new Image(m_display,org.tcm1998.utils.ResourceUtils.openBinaryResource("no_pic.png"));
}
picture.setImage(itemPicture);
}
private String blockIfEmpty (String text, String prefix)
{
String result = "";
if (!text.equals(""))
{
result = prefix + text;
}
return result;
}
private void setAmount(ModifyEvent evt){
byte amount = 0;
TreeItem[] selection = itemTree.getSelection();
if (selection.length >0){
int id = itemColl.FindItemId(selection[0].getText());
if (id != -1){
String amountTxt = ((Text)evt.widget).getText();
try{
amount = Byte.parseByte(amountTxt);
//player.SetAmount(itemColl.GetIndex(orderedItems[iCurrentList].GetBaseItemID(index)),amount);
player.SetAmount(id,amount);
}
catch(NumberFormatException e){
}
}
}
}
private TreeItem getNextTreeItem(TreeItem item){
TreeItem retVal = null;
TreeItem tempItem = null;
int index =0;
if (item.getItemCount() > 0){
retVal = item.getItem(0);
}
else{
tempItem = item.getParentItem();
if (tempItem == null){
index = itemTree.indexOf(item);
if (index < (itemTree.getItemCount()-1)){
retVal = itemTree.getItem(index+1);
}
else{
retVal = null;
}
}
else{
index = tempItem.indexOf(item);
if (index < (tempItem.getItemCount()-1)){
retVal = itemTree.getItem(index+1);
}
else{
index = itemTree.indexOf(tempItem);
if (index < (itemTree.getItemCount()-1)){
retVal = itemTree.getItem(index+1);
}
else{
retVal = null;
}
}
}
}
return retVal;
}
private void findItemByText(String itemText, boolean findNext){
TreeItem itemPart = null;
TreeItem itemPerfect = null;
TreeItem item = null;
if (itemTree.getItemCount()>0){
TreeItem items[] = itemTree.getSelection();
if ((!findNext) || (items.length == 0)){
item = itemTree.getItem(0);
}
else{
item = items[0];
item = getNextTreeItem(item);
if (item == null){
item = itemTree.getItem(0);
}
}
TreeItem startItem = item;
do{
if ((itemPart == null) && (item.getText().toLowerCase().indexOf(itemText.toLowerCase()) != -1)){
itemPart = item;
}
if ((item.getText().equalsIgnoreCase(itemText)) && (!findNext)){
itemPerfect = item;
}
item = getNextTreeItem(item);
if ((item == null) && (findNext)){
item = itemTree.getItem(0);
}
}while ((item != null) && (item != startItem) && (itemPerfect == null));
if (itemPerfect != null){
itemTree.setSelection(itemPerfect);
}
else if (itemPart != null){
itemTree.setSelection(itemPart);
}
}
}
private void onFindNext(){
findItemByText(findText.getText(),true);
}
private void onNewFile(){
boolean bOKtoClear = true;
if (bModified){
MessageBox mb = new MessageBox(m_shell,SWT.ICON_QUESTION|SWT.YES|SWT.NO);
mb.setText("Save First?");
mb.setMessage("The current catalog is not saved\nDo you want to save it first?");
if (mb.open() == SWT.YES){
bOKtoClear = onSaveFile();
}
}
if (bOKtoClear){
player.clearAllItems(itemColl.GetAccatIds());
onUpdateList();
}
}
private void onLoadFile(){
boolean bOKtoOpen = true;
String filename;
if (bModified){
MessageBox mb = new MessageBox(m_shell,SWT.ICON_QUESTION|SWT.YES|SWT.NO);
mb.setText("Save First?");
mb.setMessage("The current catalog is not saved\nDo you want to save it first?");
if (mb.open() == SWT.YES){
bOKtoOpen = onSaveFileAs();
}
}
if (bOKtoOpen){
FileDialog fd = new FileDialog (m_shell,SWT.OPEN);
filename = fd.open();
if (filename != null){
DoLoadFile(filename);
}
}
}
private boolean onSaveFile(){
boolean retVal = false;
if (currentFilename == null){
retVal = onSaveFileAs();
}
else{
if (!player.saveInventory(currentFilepath,iCurrentGame)){
MessageBox mb = new MessageBox (m_shell, SWT.ICON_ERROR|SWT.OK);
mb.setText("Error saving file");
mb.setMessage("Something went wrong while trying to save this file");
mb.open();
retVal = false;
}
else{
retVal = true;
}
}
if (retVal){ // succesfull save ?
bModified = false;
updateTitle();
accatSettings.StoreInHistory(currentFilepath);
BuildRecentMenu();
}
return retVal;
}
private boolean onSaveFileAs(){
boolean retVal = true;
String filename;
FileDialog fd = new FileDialog (m_shell, SWT.SAVE);
filename = fd.open();
if (filename != null){
if (!player.saveInventory(filename,iCurrentGame)){
MessageBox mb = new MessageBox (m_shell, SWT.ICON_ERROR|SWT.OK);
mb.setText("Error saving file");
mb.setMessage("Something went wrong while trying to save this file");
mb.open();
retVal = false;
}
else{
setCurrentFilename(filename);
}
}
else{
retVal = false;
}
if (retVal){ // succesful save ?
bModified = false;
updateTitle();
accatSettings.StoreInHistory(filename);
BuildRecentMenu();
}
return retVal;
}
private void BuildRecentMenu()
{
// Until I know how to do this more effeciently
// the recent file menu is thrown away each time
// and completely rebuilt
Menu fileMenu = itemRecent.getParent();
Menu recentMenu = new Menu(fileMenu);
itemRecent.setMenu(recentMenu);
String[] recentFiles = accatSettings.GetHistory();
for (int iRecent=recentFiles.length-1;iRecent >=0;iRecent--)
{
MenuItem item = new MenuItem(recentMenu,SWT.PUSH);
item.setText(recentFiles[iRecent]);
item.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent evt){
openRecentFile(evt.widget);
}
});
}
itemRecent.setEnabled(recentFiles.length != 0);
}
private void openRecentFile (Widget widget)
{
MenuItem item = (MenuItem)widget;
DoLoadFile(item.getText());
}
private void DoLoadFile(String filename)
{
int gameID[] = new int[1];
boolean succes = player.loadInventory(filename,itemColl.GetAccatIds(),true,gameID);
if (succes)
{
if (gameID[0] != iCurrentGame)
{
iCurrentGame = gameID[0];
}
succes = player.loadInventory(filename,itemColl.GetAccatIds(),false,gameID);
}
if (!succes){
MessageBox mb = new MessageBox (m_shell,SWT.ICON_ERROR|SWT.OK);
mb.setText("Error loading file");
mb.setMessage("Invalid file format!");
mb.open();
}
else{
onUpdateList();
setCurrentFilename(filename);
updateTitle();
}
}
// private void onExport(){
// exportwnd.open();
// if (exportwnd.exportSettings.d_return > 0){
// ExportDlg.DlgData s = exportwnd.exportSettings;
// CatalogExport exp = null;
// switch (s.d_format){
// case 0:
// exp = new CatalogTextExport(m_display, itemColl);
// break;
// case 1:
// exp = new CatalogHTMLExport(m_display, itemColl);
// break;
// case 2:
// exp = new CatalogPHPBBExport(m_display, itemColl);
// break;
// case 3:
// exp = new CatalogCSVExport(m_display, itemColl);
// }
// exp.SetOrder(orderedItems[s.d_sortorder]);
// exp.SetItemFilter(s.d_AvailSelected,s.d_MisSelected,s.d_WishSelected,
// s.d_catagories);
// exp.SetTitle(s.d_title);
// exp.SetHeader(s.d_header);
// exp.SetFooter(s.d_footer);
// exp.SetTarget(s.d_exportFile);
// exp.SetPlayer(player);
// exp.ExportCatalog();
// }
// }
private void onFilter()
{
filterwnd.open(m_shell, itemfilter);
}
private void onFilterUpdated()
{
itemColl.doFilter(itemfilter);
onUpdateList();
}
private void onExit(){
m_shell.close();
}
private void onClose(ShellEvent e){
Point loc = m_shell.getLocation();
accatSettings.setLocation(loc.x,loc.y);
if (bModified){
MessageBox mb = new MessageBox (m_shell, SWT.ICON_WARNING|SWT.YES|SWT.NO|SWT.CANCEL);
mb.setText("Discard changes?");
mb.setMessage("The current catalog is not saved\nAre you sure you want to quit without saving?");
int res = mb.open();
switch (res){
case SWT.CANCEL:
e.doit = false;
break;
case SWT.YES:
e.doit = true;
break;
case SWT.NO:
if (onSaveFile()){
e.doit = true;
}
else{
e.doit = false;
}
}
}
}
private void setCurrentFilename(String filename){
File file = new File(filename);
currentFilename = file.getName();
currentFilepath = filename; // full path to the same file
}
private void updateTitle(){
String title = "ACCAT v0.12a";
if (currentFilename != null){
title += " - " + currentFilename;
}
if (bModified){
title += " *";
}
m_shell.setText(title);
}
}