Code Search for Developers
 
 
  

WikiEditorTab.java from MASE: Agile Software Engineering at Krugle


Show WikiEditorTab.java syntax highlighted

package fitEditor;


import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Vector;

import testResultView.TestResultView;
import testRunner.FitManager;
import treeView.TreeView;

import view.FitView;
import plugin.DeveloperCoordinator;
import plugin.FitClipsePlugin;
import plugin.ICoordinator;
import fitEditor.dialogs.projectlist.FileLabelProvider;
import fitEditor.dialogs.projectlist.FileTreeContentProvider;
import fitEditor.dialogs.table.TableAddDialog;
import fitEditor.dialogs.table.TableEditDialog;
import fitService.fitnesse.wikitext.WidgetBuilder;
import fitService.util.EditorConstants;
import fitService.util.Operation;
import fitService.util.WikiColumn;
import fitService.util.WikiRow;
import fitService.util.WikiTable;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.dialogs.ISelectionStatusValidator;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.window.Window;
import org.eclipse.jdt.internal.ui.wizards.TypedElementSelectionValidator;

import connector.MaseSystem;

/**
 * This class is responsible for controlling mase fit tests
 *
 * Contributor: Shu Xueling
 */
/**
 * @author wilsonp
 *
 */
public class WikiEditorTab
{
	private TabCreator tabCreator;
	private String     agentEmail;
	private ArrayList  pages=new ArrayList();
	private WikiTable  editingTable;
	private int        tableInsPos;
	private int        selectionCount;
	private StringBuffer   pageContent=new StringBuffer();
	

	private Text   txtWikiPageContent;
	private	Text   txtWikiPageName;
	private Label  lblWikiPageName;
	private Label  lblPagelist;
	private Button btnLoadPage;
	private Button btnSavePage;
	private Button btnGenJavaClass;
	private Button btnRunTest;
	private Button btnViewOnServer;
	private Combo  pageList;
	private Shell  parentShell;

	/**
	 * @param parent
	*/
	public WikiEditorTab(Composite parent,TabCreator tabCreator)
	{
		this.parentShell=parent.getShell();
		this.addChildControls(parent);
		//this.setMainView(view);
		this.setTabCreator(tabCreator);
		
	}

	/**
	 * Run and wait for a close event
	 * @param shell Instance of Shell
	 */
	private void run(Shell shell)
	{
		Display display = shell.getDisplay();
		while (!shell.isDisposed())
		{
			if (!display.readAndDispatch())
				display.sleep();
		}
	}

	/**
	 * Release resources
	 */
	public void dispose()
	{

	}

	/**
	 * Create a new shell, add the widgets, open the shell
	 *
	 */
	private void addChildControls(Composite parent)
	{
		// Create a composite to hold the children
		btnViewOnServer = new Button(parent, SWT.PUSH | SWT.CENTER);
		GridData gridData3 = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
		gridData3.widthHint = 120;
		gridData3.heightHint = 20;
		btnViewOnServer.setText("View on Server");
		btnViewOnServer.setLayoutData(gridData3);
		btnViewOnServer.addSelectionListener(new SelectionAdapter()
	    		{
	    			public void widgetSelected(SelectionEvent e)
	    			{
	    				if(!tabCreator.getLoginTab().checkLoginState()) return;
	    				String pageName=txtWikiPageName.getText().trim();
	    				MaseSystem mase=MaseSystem.getMaseSystem();
	    				if(!mase.doesPageExist(pageName)){
	    					MessageBox messageBox = new MessageBox(parentShell, SWT.ICON_QUESTION|SWT.YES|SWT.NO);
	    					messageBox.setMessage("This page does not exist. Do you want to save it before view it on the server?");
	    					messageBox.setText("View Page on Server?");
	    					int response = messageBox.open();
	    					switch(response){
	    					case SWT.YES: saveWikiContentOnServer(pageName,txtWikiPageContent.getText().trim());break;
	    					case SWT.NO: return;
	    					}
	    					
	    				}
	    				refreshServerView();
	    				tabCreator.showView(EditorConstants.SERVER_VIEWER_TAB);
	    				
	    			}
	    		});
		
		GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_BOTH);
		parent.setLayoutData (gridData);

		GridLayout layout = new GridLayout(EditorConstants.FITEDITOR_WIDGETS_PER_ROW, false);
		layout.marginWidth =EditorConstants.LAYOUT_MARGIN_WIDTH;
		parent.setLayout (layout);

		// Add editing buttons
		Composite upperControlsParent=new Composite(parent,SWT.CENTER);

		GridData gridData0 = new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_BOTH);
		upperControlsParent.setLayoutData (gridData0);

		GridLayout layout0 = new GridLayout(EditorConstants.FITEDITOR_WIDGETS_PER_ROW_1, true);
		layout0.marginWidth =EditorConstants.LAYOUT_MARGIN_WIDTH;
		layout0.horizontalSpacing=EditorConstants.LAYOUT_HORIZONTAL_SPACING;
		upperControlsParent.setLayout (layout0);

		createUpperControls(upperControlsParent);

		// Create the editor
		Composite editorParent=new Composite(parent,SWT.CENTER);

		GridData gridData1 = new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_BOTH);
		editorParent.setLayoutData (gridData1);

		GridLayout layout1 = new GridLayout(EditorConstants.FITEDITOR_WIDGETS_PER_ROW, false);
		layout1.marginWidth =EditorConstants.LAYOUT_MARGIN_WIDTH;
		editorParent.setLayout (layout1);

		this.createEditor(editorParent);

		// Add the buttons
		Composite lowerControlsParent=new Composite(parent,SWT.CENTER);

		GridData gridData2 = new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_BOTH);
		editorParent.setLayoutData (gridData2);

		GridLayout layout2 = new GridLayout(EditorConstants.FITEDITOR_WIDGETS_PER_ROW_1, false);
		layout2.marginWidth =EditorConstants.LAYOUT_MARGIN_WIDTH;
		layout2.horizontalSpacing=EditorConstants.LAYOUT_HORIZONTAL_SPACING;
		lowerControlsParent.setLayout (layout2);

		createLowerControls(lowerControlsParent);
	}

	/**
	 * Add upper editing controls for this editor
	 * @param parent
	 */
	private void createUpperControls(Composite parent)
	{
		btnGenJavaClass = new Button(parent, SWT.PUSH | SWT.CENTER);
		GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
		gridData.widthHint = 120;
		gridData.heightHint = 20;
	    btnGenJavaClass.setText("Generate Java Code");
	    btnGenJavaClass.setLayoutData(gridData);

	    btnGenJavaClass.addSelectionListener(new SelectionAdapter()
		{
			public void widgetSelected(SelectionEvent e)
			{
				if(!tabCreator.getLoginTab().checkLoginState()) return;
				String destPath="";

				//pop up a dialog,allowing users to select destination directory for java codes
				IWorkspaceRoot iwr=FitClipsePlugin.getWorkspaceRoot();
		        final ElementTreeSelectionDialog dialog =
		                    new ElementTreeSelectionDialog(parentShell,
		                    new FileLabelProvider(),
		                    new FileTreeContentProvider(true));
		        dialog.setAllowMultiple(false);
		        dialog.setTitle(EditorConstants.SAVE_DLG_TITLE);
		        dialog.setMessage(EditorConstants.SAVE_DLG_MSG);
		        dialog.setInput(iwr);
		        dialog.setValidator(new TypedElementSelectionValidator(
		                    new Class[]{IFolder.class,IProject.class}, false));
		        if(dialog.open() == Window.OK) {
		        	IResource rc = (IResource)dialog.getFirstResult();
		            if (rc != null)
		            {
		            	//if(rc instanceof IFolder)
		                	destPath=rc.getLocation().toString();//EditorConstants.PATH_WORKSPACE+rc.getFullPath().toString();
		                //if(rc instanceof IProject)
		                	//destPath=EditorConstants.PATH_WORKSPACE+rc.getFullPath().toString();

		                //	generate java code
		    			tabCreator.getMainView().getFitClipseStub().getFitTranslator().parseWikiTablesToJavaCode(
		    						txtWikiPageContent.getText().trim(),destPath+"\\");
		            }
		        }
			}
		});
	    
	    
	}

	/**
	 * Create the Table
	 */
	private void createEditor(Composite parent)
	{
		//add text editor
		GridData gridData = new GridData (GridData.BEGINNING);
		gridData.widthHint =parent.getShell().getBounds().width;
		gridData.heightHint = parent.getShell().getBounds().height-280;

		txtWikiPageContent=new Text(parent, SWT.BORDER|SWT.MULTI|SWT.WRAP);
		txtWikiPageContent.setOrientation(SWT.V_SCROLL|SWT.H_SCROLL|SWT.LEFT_TO_RIGHT);
		txtWikiPageContent.setLayoutData(gridData);
	}

	/**
	 * Add controls for wiki page operation
	 * @param parent the parent composite
	 */
	private void createLowerControls(Composite parent)
	{
		lblWikiPageName= new Label(parent, SWT.NONE);
		txtWikiPageName	= new Text(parent, SWT.BORDER);
		lblPagelist= new Label(parent, SWT.NONE);
		pageList = new Combo(parent, SWT.LEFT);
		btnLoadPage = new Button(parent, SWT.PUSH | SWT.CENTER);
		btnSavePage = new Button(parent, SWT.PUSH | SWT.CENTER);

		GridData gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);

		gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
		gridData.widthHint = 110;
		lblWikiPageName.setText("Enter Wiki Page Name");
		lblWikiPageName.setLayoutData(gridData);

		gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
		gridData.widthHint = 280;
		// read last MASE URL sucessfully used from local file
		
		txtWikiPageName.setText("");
		txtWikiPageName.setLayoutData(gridData);

		gridData = new GridData (GridData.HORIZONTAL_ALIGN_FILL);
		gridData.widthHint = 70;
		lblPagelist.setText("Wiki Page List");
		lblPagelist.setLayoutData(gridData);

		gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
		gridData.widthHint = 120;
		gridData.heightHint = 20;
		pageList.setLayoutData(gridData);
		pageList.setVisibleItemCount(20);
		pageList.addSelectionListener(new SelectionAdapter()
		{
				public void widgetSelected(SelectionEvent e)
				{
					//when an item in page list is selected, put the page name into text field
					String pagename=pageList.getItem(pageList.getSelectionIndex());
					txtWikiPageName.setText(pagename);
				}
		});
//		this.initPageList();

		gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
		gridData.widthHint = 100;
		gridData.heightHint = 20;
		btnLoadPage.setText("Load Wiki Page");
		btnLoadPage.setLayoutData(gridData);

		btnLoadPage.addSelectionListener(new SelectionAdapter()
		{
			public void widgetSelected(SelectionEvent e)
			{
				loadWikiPage(txtWikiPageName.getText());
			}
		});

		gridData = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
		gridData.widthHint = 120;
		gridData.heightHint = 20;
		btnSavePage.setText("Save Wiki Page");
		btnSavePage.setLayoutData(gridData);

		//Changed by Chengyao & Patric
		//change add method to MaseFit
		
		btnSavePage.addSelectionListener(new SelectionAdapter()
		{
			public void widgetSelected(SelectionEvent e)
			{
//				if(!tabCreator.getLoginTab().checkLoginState()) return;
//
				String wikipageName=txtWikiPageName.getText().trim();
//				if (wikipageName!="")
//				{
//					MaseSystem mase  = MaseSystem.getMaseSystem();
//					if(mase==null){
//						//TODO: add a popup "wrong server or not logged in
//						return;
//					}
					String wikipageContent=null;
					wikipageContent=txtWikiPageContent.getText().trim();
//					
//					if(wikipageContent!=null)
//					{
////						boolean saveSuccess=tabCreator.getMainView().getFitClipseStub().getFitConnection().saveWikiPage(wikipageName,
////								wikipageContent,"");
//						boolean saveSuccess=mase.saveFitPageText(wikipageName,wikipageContent);
//
//						if(!saveSuccess)
//						{
//							MessageBox box=new MessageBox(parentShell,SWT.OK);
//							box.setMessage(EditorConstants.SAVE_FAILURE_MESSAGE);
//							box.open();
//						}
//					}
//					
//					
//				}
				saveWikiContentOnServer(wikipageName,wikipageContent);
				
				//refresh the fit tree
				ICoordinator coordinator=DeveloperCoordinator.getInstance();
				TreeView tv = (TreeView)(coordinator.getView(TreeView.class));
				if(tv != null){
					tv.refreshView();
				}
				
				
			}
		});
		btnRunTest = new Button(parent, SWT.PUSH | SWT.CENTER);
		GridData gridData2 = new GridData (GridData.HORIZONTAL_ALIGN_BEGINNING);
		gridData2.widthHint = 120;
		gridData2.heightHint = 20;
		btnRunTest.setText("Run as Fit Test");
		btnRunTest.setLayoutData(gridData2);
		btnRunTest.addSelectionListener(new SelectionAdapter()
	    		{
	    			public void widgetSelected(SelectionEvent e)
	    			{
	    				ICoordinator coordinator= DeveloperCoordinator.getInstance();
	    				String Url="";
	    				if(!tabCreator.getLoginTab().checkLoginState()) return;
	    				
	    				String pageName = txtWikiPageName.getText().trim();
	    				MaseSystem mase=MaseSystem.getMaseSystem();
	    				if(!mase.doesPageExist(pageName)){
	    					MessageBox messageBox = new MessageBox(parentShell, SWT.ICON_QUESTION|SWT.YES|SWT.NO);
	    					messageBox.setMessage("This page does not exist. Do you want to save it before running the test?");
	    					messageBox.setText("Save Page?");
	    					int response = messageBox.open();
	    					switch(response){
	    					case SWT.YES: saveWikiContentOnServer(pageName,txtWikiPageContent.getText().trim());break;
	    					case SWT.NO: return;
	    					}
	    					
	    				}
	    				FitManager Fit = FitManager.getFitManager();
	    				Url = Fit.getResultTestRoot()+ "\\" + pageName.substring(1) + ".html";
	    				
	    				if(isWikiPageContentChanged()){
	    					if(coordinator.isViewRegistered(FitView.class)){
	    						FitView fv = null;
	    						fv = (FitView)(coordinator.getView(FitView.class));
	    						if(fv.yesNoMessageBox("Run Test Warning!","WARNING: " +
	    								"Local version of test is out of sync with server. " +
	    								"Do you want to save it first?")){
	    							saveWikiContentOnServer(pageName,txtWikiPageContent.getText().trim());
	    						}
	    						
//	    						System.out.println("FItView Registered");
		    					
		    				}
	    					
//	    					System.out.println("Content Changed!1111111");
	    				}
	    				
	    				//end of remove
	    				Fit.CreateTest(pageName);
	    				Fit.runTests();
	    				Fit.clearTests();
	    				
	    				//trigger browser to refress
	    				
	    				
	    				if(coordinator.isViewRegistered(TestResultView.class)){
	    					TestResultView testResultView = null;
	    					testResultView = (TestResultView)(coordinator.getView(TestResultView.class));
	    					testResultView.refreshBrowser(Url);
	    					
	    				}else{
	    					//later load view
	    					
	    				}


	    			}
	    		});
		
		

	}


	/**
	 * Return the parent composite
	 */
	public Control getControl() {
		return null;//table.getParent();
	}


	private void setTabCreator(TabCreator tC){
		this.tabCreator = tC;
	}

	/**
	 * @return Returns the agentEmail.
	 */
	public String getAgentEmail() {
		return agentEmail;
	}
	/**
	 * @param agentEmail The agentEmail to set.
	 */
	public void setAgentEmail(String agentEmail) {
		this.agentEmail = agentEmail;
	}

	/**
	 * read from file and put items in the combo box
	 *
	 */
//	public void initPageList()
//	{
//		File f=new File("c:/mase");
//		File f1=new File("c:/mase/wikipages.log");
//		if(f.exists() && f1.exists())
//		{
//			try
//			{
//				BufferedReader reader=
//					new BufferedReader(new InputStreamReader
//							(new FileInputStream(f1)));
//
//				String pagename;
//				pagename=reader.readLine();
//				while(pagename!=null && pagename.trim()!="")
//				{
//					pageList.add(pagename);
//					pagename=reader.readLine();
//				}
//
//				reader.close();
//			}
//			catch (FileNotFoundException e)
//			{
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//			catch (IOException e)
//			{
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//
//
//		}
//	}
//
//	/**
//	 * Write items from the combo box "page list" to file
//	 *
//	 */
//	public void savePageList()
//	{
//		File f=new File("c:/mase");
//		if(!f.exists()) f.mkdir();
//
//		if(f.exists())
//		{
//			try
//			{
//				FileWriter writer=
//					new FileWriter("c:/mase/wikipages.log");
//
//				String pagename;
//				for(int i=0;i<pages.size();i++)
//				{
//					pagename=(String)pages.get(i);
//					writer.write(pagename+System.getProperty("line.separator"));
//				}
//
//				writer.close();
//			}
//			catch (FileNotFoundException e)
//			{
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//			catch (IOException e)
//			{
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//
//		}
//	}

	public String getWikiPageName() {
		return txtWikiPageName.getText().trim();
	}
	
	

	/**
	 * add a new wikitable
	 * @param addDialogOpen
	 */
	public void addNewWikiTable(boolean addDialogOpen)
	{
		if(!addDialogOpen)
		{
			pageContent=new StringBuffer((txtWikiPageContent.getText().trim()));
			// open 'add table' dialog
			TableAddDialog dlgAddTable=new TableAddDialog(parentShell,this);
			dlgAddTable.open();
		}
		else
		{
			//open 'edit table' dialog
			TableEditDialog dlgEditTable=new TableEditDialog(parentShell,this);
			dlgEditTable.open();
		}
	}

	/**
	 * edit a new or existing wiki table
	 * @param editDialogOpen
	 */
	public void editWikiTable(boolean editDialogOpen)
	{
		if(!editDialogOpen)
		{
			pageContent=new StringBuffer((txtWikiPageContent.getText().trim()));
			//get wikitable to be edited
			Vector<WikiTable> tables=tabCreator.getMainView().getFitClipseStub().
									 getFitTranslator().generateWikiTable(pageContent.toString());

			int insPos=getTableInsPos();
			int tblDataStartPos=-1;
			int tblDataEndPos=-1;
			for(WikiTable table: tables)
			{
				tblDataStartPos=table.getTableDataStartPos();
				tblDataEndPos=table.getTableDataEndPos();

				if(tblDataStartPos!=-1 && tblDataEndPos!=-1 && tblDataStartPos!=tblDataEndPos &&
				   tblDataStartPos<=insPos && insPos<=tblDataEndPos)
				{
					this.setEditingTable(table);
					this.setSelectionCount(table.getTableData().length());
					break;
				}
			}

			if(this.getEditingTable()==null) return;

			//open 'edit table' dialog
			TableEditDialog dlgEditTable=new TableEditDialog(parentShell,this);
			dlgEditTable.open();
		}
		else
		{
			//generate wiki table text
			WikiTable table=getEditingTable();
			String wikiTableTxt=tabCreator.getMainView().getFitClipseStub().
								getFitTranslator().generateWikiTableText(table);

			//change wikitable text in wiki editor
			pageContent.replace(table.getTableDataStartPos(),table.getTableDataEndPos(),wikiTableTxt);
			txtWikiPageContent.setText(pageContent.toString().trim());
		}
	}

	/**
	 * get currently edited table
	 * @return WikiTable
	 */
	public WikiTable getEditingTable() {
		return editingTable;
	}

	/**
	 * set currently edited table
	 * @param editingTable
	 */
	public void setEditingTable(WikiTable editingTable) {
		this.editingTable = editingTable;
	}

	/**
	 * @return String
	 */
	public Text getTxtWikiPageContent() {
		return txtWikiPageContent;
	}

	/**
	 * @return int
	 */
	public int getSelectionCount() {
		return selectionCount;
	}
	
	/**
	 * This method should refresh the tab with a different wiki page
	 * 
	 * @param pageName
	 */
	public void loadWikiPage(String pageName){
//		if(!tabCreator.getLoginTab().checkLoginState()) return;
		txtWikiPageName.setText(pageName);
		String wikipageName=pageName;
		if (wikipageName!="" )
		{
			//added by Pat and Chengyao
			//replaces the FitService Stub with a Mase Bean lookup

			//Connecting to Mase bean
			MaseSystem mase  = MaseSystem.getMaseSystem();
			if(mase==null){
				//TODO: add a popup "wrong server or not logged in
				return;
			}
			String wikipageContent= mase.getFitPageText(wikipageName);

			if(wikipageContent!=null){
				txtWikiPageContent.setText(wikipageContent);
				
			}
			else{
				txtWikiPageContent.setText("");
			
			}
				
			//put page name into combo box 'pagelist' if this page is not there
			String pagename=wikipageName;
			if(!Arrays.asList(pageList.getItems()).contains(pagename))
			{
				pageList.add(pagename);
				pageList.select(pageList.getItemCount()-1);
				pages.add(pagename);
			}
		}
	}

	/**
	 * @param selectionCount
	 */
	public void setSelectionCount(int selectionCount) {
		this.selectionCount = selectionCount;
	}

	/**
	 * @return int
	 */
	public int getTableInsPos() {
		return tableInsPos;
	}

	/**
	 * @param tableInsPos
	 */
	public void setTableInsPos(int tableInsPos) {
		this.tableInsPos = tableInsPos;
	}
	
	public boolean isWikiPageContentChanged(){
		
		String wikipageName=txtWikiPageName.getText().trim();
		System.out.println("the page name is: "+wikipageName+".");
		if(wikipageName.equals(""))return false;
		MaseSystem mase  = MaseSystem.getMaseSystem();
//		System.out.println("the mase instance is: "+mase);
		
		
		String ServerWikipageContent= mase.getFitPageText(wikipageName).trim();
		
//		System.out.println("the content server is "+ServerWikipageContent);
		String LocalWikipageContent= txtWikiPageContent.getText().trim();
		
			
//		if(mase==null){
//			MessageBox box=new MessageBox(parentShell,SWT.OK);
//			box.setMessage(EditorConstants.NOT_LOGIN_MESSAGE);
//			box.open();
//			return false ;
//		}
		
//		System.out.println("'"+ServerWikipageContent+"'");
//		System.out.println("'"+LocalWikipageContent+"'");
		return !(ServerWikipageContent.equals(LocalWikipageContent));		
	}
	
	public void saveWikiContentOnServer(String pageName,String content){
		
		if(!tabCreator.getLoginTab().checkLoginState()) return;

//		String wikipageName=txtWikiPageName.getText().trim();
		if (pageName!="")
		{
			MaseSystem mase  = MaseSystem.getMaseSystem();
			if(mase==null){
				//TODO: add a popup "wrong server or not logged in
				return;
			}
			
			if(content!=null)
			{
//				boolean saveSuccess=tabCreator.getMainView().getFitClipseStub().getFitConnection().saveWikiPage(wikipageName,
//						wikipageContent,"");
				boolean saveSuccess=mase.saveFitPageText(pageName,content);

				if(!saveSuccess)
				{
					MessageBox box=new MessageBox(parentShell,SWT.OK);
					box.setMessage(EditorConstants.SAVE_FAILURE_MESSAGE);
					box.open();
				}
			}
			
			
		}
		
	}
	public void refreshServerView(){
		if(isWikiPageContentChanged()){
			
			System.out.println("inside if content changed server refresh");
			
			saveChangeMessageBox("Save?","The page named " + getWikiPageName() +
					" in WikiEditor hase chagned. " +
					"Do you want to view the test content on ServerViewer after saving the changes?");
		}
		else tabCreator.getServerViewerTab().refreshBrowser();
	}
	
	public void saveChangeMessageBox(String title, String message){
		String pageName=tabCreator.getWikiEditorTab().getWikiPageName().trim();
		Text content=tabCreator.getWikiEditorTab().getTxtWikiPageContent();
		
		MessageBox messageBox = new MessageBox(parentShell, SWT.ICON_QUESTION|SWT.YES|SWT.NO|SWT.CANCEL);
		messageBox.setMessage(message);
		messageBox.setText(title);
		int response = messageBox.open();
		switch(response){
		case SWT.YES: saveWikiContentOnServer(pageName,content.getText());break;
		case SWT.NO: tabCreator.getServerViewerTab().refreshBrowser();
					 loadWikiPage(getWikiPageName());
					 break;
		case SWT.CANCEL: break;
		}
		
	}
	
	

		//TODO: add set the wikipage name
	
}




See more files for this project here

MASE: Agile Software Engineering

The MASE project investigates methods to support the coordination and executable acceptance testing of software projects. Keywords: Agile methods, distributed teams, Extreme Programming. See http://ebe.cpsc.ucalgary.ca/ebe for more information.

Project homepage: http://sourceforge.net/projects/mase
Programming language(s): Java,XML
License: other

  dialogs/
    projectlist/
      FileLabelProvider.java
      FileTreeContentProvider.java
    table/
      IRowListViewer.java
      RowList.java
      TableAddDialog.java
      TableCellModifier.java
      TableEditDialog.java
      TableEidtor.java
      TableLabelProvider.java
    ImageInfoDialog.java
    LinkInfoDialog.java
  LoginTab.java
  PreviewTab.java
  ScapView.java
  ServerViewer.java
  TabCreator.java
  WikiEditorTab.java