Revision 1457

tmp/org.txm.progression.rcp/src/org/txm/progression/rcp/editors/ProgressionEditor.java (revision 1457)
568 568
		}
569 569
		
570 570
		if(count > maxCount)	{
571
			MessageDialog d = new MessageDialog(getShell(), TXMCoreMessages.error_error2, null,
571
			MessageDialog d = new MessageDialog(this.getShell(), TXMCoreMessages.error_error2, null,
572 572
					NLS.bind(ProgressionUIMessages.error_theQueryIsAlreadyRepresentedByACurveInTheGraphic, query), 0, new String[] { TXMCoreMessages.common_ok}, 0);
573 573
			d.open();
574 574
			return true;
tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/EigenvaluesChartEditor.java (revision 1457)
26 26

  
27 27
	@Override
28 28
	public void __createPartControl() {
29
		// nothing to do
29
		// remove the compute button
30
		this.removeComputeButton();
30 31
	}
31 32

  
32 33
	@Override
tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/ColsRowsInfosEditor.java (revision 1457)
65 65
import org.txm.rcp.editors.input.AbstractTablableEditorInput;
66 66
import org.txm.rcp.messages.TXMUIMessages;
67 67
import org.txm.rcp.swt.GLComposite;
68
// TODO: Auto-generated Javadoc
68

  
69 69
/**
70 70
 * Used to display rows and cols informations such as contribution, inertia,
71
 * mass, coord... @ author mdecorde
71
 * mass, coord...
72 72
 * 
73
 * @author mdecorde
74
 * 
73 75
 */
74 76
public abstract class ColsRowsInfosEditor extends TXMEditor {
75 77
	
76
	/** The ID. */
77
	static public String ID = "org.txm.rcp.editors.ca.ColsrowsInfosEditor"; //$NON-NLS-1$
78

  
79
	/** The viewer. */
78
	/**
79
	 * The viewer.
80
	 */
80 81
	private TableViewer viewer;
81 82
	
82 83

  
......
92 93
	@Override
93 94
	public void _createPartControl() {
94 95
		
95
		CA ca = (CA) this.getResult();
96
		// remove the compute button
97
		this.removeComputeButton();
96 98
		
97 99
		GLComposite resultArea = this.getResultArea();
98 100
		
......
155 157
		// Register the context menu
156 158
		TXMEditor.initContextMenu(this.viewer.getTable(), this.getSite(), this.viewer);
157 159

  
158
//		createContextMenu(viewer);
159

  
160

  
161
		
162 160
	}
163 161

  
164
//	/**
165
//	 * Creates the context menu.
166
//	 *
167
//	 * @param tableViewer the table viewer
168
//	 */
169
//	private void createContextMenu(TableViewer tableViewer) {
170
//
171
//		MenuManager menuManager = new MenuManager();
172
//		Menu menu = menuManager.createContextMenu(tableViewer.getTable());
173
//
174
//		// Set the MenuManager
175
//		tableViewer.getTable().setMenu(menu);
176
//		getSite().registerContextMenu(menuManager, tableViewer);
177
//		// Make the selection available
178
//		getSite().setSelectionProvider(tableViewer);
179
//	}
180 162

  
181 163
	/**
182 164
	 * Gets the data to give to the viewer.
tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/EigenvaluesTableEditor.java (revision 1457)
50 50
import org.txm.rcp.editors.TableKeyListener;
51 51
import org.txm.rcp.editors.TableLinesViewerComparator;
52 52
import org.txm.rcp.swt.GLComposite;
53
// TODO: Auto-generated Javadoc
53

  
54

  
54 55
/**
55
 * show the singular values and compute some stats.
56
 * Displays the singular values and computes some stats.
56 57
 *
57 58
 * @author mdecorde
59
 * @author sjacquot
58 60
 */
59 61
public class EigenvaluesTableEditor extends TXMEditor<CA> {
60 62

  
61 63

  
62

  
63
	/** The ID. */
64
	static public String ID = "org.txm.rcp.editors.TableEditor"; //$NON-NLS-1$
65

  
66 64
	/** The viewer. */
67 65
	private TableViewer viewer;
68 66

  
69
	/** The table input. */
70
	//private ITablableEditorInput tableInput;
71 67

  
72
	/** The columns. */
73
	List<TableViewerColumn> columns = new ArrayList<TableViewerColumn>();
74

  
75
	/** The table sorter. */
76
//	private TableSorter tableSorter;
77

  
78

  
79

  
80 68
	/**
81 69
	 * 
82 70
	 * @param result
......
89 77
	@Override
90 78
	public void _createPartControl() throws Exception {
91 79
		
92
		//this.parent.setLayout(new FillLayout());
93

  
94
		//tableInput = (ITablableEditorInput) this.getEditorInput();
95

  
80
		// remove the compute button
81
		this.removeComputeButton();
82
		
96 83
		GLComposite resultArea = this.getResultArea();
97 84
		
98 85
		viewer = new TableViewer(resultArea, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION);
......
110 97
				CAUIMessages.eigenvalue,
111 98
				"%", CAUIMessages.CorrespondanceAnalysisEditorInput_11, "", ""}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$;
112 99

  
113
		
100

  
114 101
		for (int i = 0; i < titles.length; i++) {
115
			final int index = i;
116 102
			final TableViewerColumn column;
117 103

  
118 104
			int alignment = SWT.RIGHT;
......
127 113
			column.getColumn().setWidth(100);
128 114
			column.getColumn().setResizable(true);
129 115
			column.getColumn().setMoveable(true);
130
			columns.add(column);
131

  
132
//			column.getColumn().addSelectionListener(new SelectionAdapter() {
133
//				@Override
134
//				public void widgetSelected(SelectionEvent e) {
135
//					StatusLine.setMessage(TXMUIMessages.sortingColumn);
136
//					tableSorter.setColumn(index);
137
//					int dir = viewer.getTable().getSortDirection();
138
//					if (viewer.getTable().getSortColumn() == column.getColumn()) {
139
//						dir = dir == SWT.UP ? SWT.DOWN : SWT.UP;
140
//					} else {
141
//						dir = SWT.DOWN;
142
//					}
143
//					viewer.getTable().setSortDirection(dir);
144
//					viewer.getTable().setSortColumn(column.getColumn());
145
//					viewer.refresh();
146
//					StatusLine.setMessage(TXMUIMessages.sortDone);
147
//				}
148
//			});
149 116
		}
150 117

  
151 118

  
......
186 153
		viewer.setComparator(viewerComparator);
187 154
		viewerComparator.addSelectionAdapters(viewer);
188 155

  
189
		
190
//		tableSorter = new TableSorter();
191
//		
192
//		tableSorter.setColumnTypes(new String[] {
193
//				TXMUIMessages.integer,
194
//				CAEditor.COL_TYPE,
195
//				CAEditor.COL_TYPE,
196
//				CAEditor.COL_TYPE,
197
//				CAEditor.COL_TYPE,
198
//				CAEditor.SEPARATOR});
199
//		
200
//		
201
//		viewer.setSorter(tableSorter);
202

  
203
//		tableSorter.setColumn(0);
204
//		int dir = viewer.getTable().getSortDirection();
205
//		if (viewer.getTable().getSortColumn() == columns.get(0).getColumn()) {
206
//			dir = dir == SWT.UP ? SWT.DOWN : SWT.UP;
207
//		} else {
208
//			dir = SWT.DOWN;
209
//		}
210
//		viewer.getTable().setSortDirection(dir);
211
//		viewer.getTable().setSortColumn(columns.get(0).getColumn());
212

  
213

  
214 156
		// Register the context menu
215 157
		TXMEditor.initContextMenu(this.viewer.getTable(), this.getSite(), this.viewer);
216

  
217
//		createContextMenu(viewer);
218

  
219

  
220 158
		
221 159
	}
222 160

  
......
243 181

  
244 182
		this.viewer.refresh();
245 183

  
246
		// Pack the columns
247
		//TXMEditor.packColumns(viewer);
248

  
249 184
	}
250 185
	
251 186

  
......
258 193

  
259 194
	@Override
260 195
	public void updateResultFromEditor() {
261
		// TODO Auto-generated method stub
262
		
196
		// nothing to do
263 197
	}
264 198

  
265 199
	
tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/debug/TXMResultDebugView.java (revision 1457)
116 116
		buffer.append("toString(): " + this.currentResult.toString() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
117 117
		buffer.append("Details: " + this.currentResult.getDetails() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
118 118
		buffer.append("Dirty: " + this.currentResult.isDirty() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
119
		buffer.append("Altered: " + this.currentResult.isAltered() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
119 120
		buffer.append("Has been computed once: " + this.currentResult.hasBeenComputedOnce() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
120 121
//		if (this.currentResult instanceof ChartResult) 	{
121 122
//			buffer.append("Chart dirty: " + ((ChartResult)this.currentResult).isChartDirty() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
......
134 135
		buffer.append("Selected object = " + this.currentResult + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
135 136
		buffer.append("Node visible = " + this.currentResult.isVisible() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
136 137
		buffer.append("Node weight = " + this.currentResult.getWeight() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
137
		buffer.append("Persistable = " + this.currentResult.isInternalPersistable() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
138
		buffer.append("Internal persistable = " + this.currentResult.isInternalPersistable() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
138 139
		buffer.append("User persistable = " + this.currentResult.isUserPersistable() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
139 140
//		if (this.currentResult instanceof ChartResult) 	{
140 141
//			buffer.append("Chart engine = " + ((ChartResult)this.currentResult).getChartsEngine() + ", chart object = " + ((ChartResult)this.currentResult).getChart()
tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/ITablableEditorInput.java (revision 1457)
39 39
 * @author sloiseau
40 40
 * 
41 41
 */
42
// FIXME: SJ: reuse this in a generic TXMTableEditor class
42 43
public interface ITablableEditorInput extends IEditorInput {
43 44

  
44 45
	/**
tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorExtension.java (revision 1457)
83 83
	public abstract boolean isDirty() throws Exception;
84 84
	
85 85
	/**
86
	 * Checks if the extension needs to save the editor on close.
87
	 * @return
88
	 * @throws Exception
89
	 */
90
	public abstract boolean isSaveOnCloseNeeded() throws Exception;
91
	
92
	/**
86 93
	 * Save something when the doSave method is called
87 94
	 * @throws Exception
88 95
	 */
tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java (revision 1457)
49 49
import org.eclipse.ui.IEditorSite;
50 50
import org.eclipse.ui.IPartListener;
51 51
import org.eclipse.ui.IPartListener2;
52
import org.eclipse.ui.ISaveablePart2;
52 53
import org.eclipse.ui.IWorkbenchPage;
53 54
import org.eclipse.ui.IWorkbenchPart;
54 55
import org.eclipse.ui.IWorkbenchPartReference;
......
95 96
 * @author sjacquot
96 97
 *
97 98
 */
98
public abstract class TXMEditor<T extends TXMResult> extends EditorPart implements TXMResultListener {
99
public abstract class TXMEditor<T extends TXMResult> extends EditorPart {
99 100

  
100 101
	/**
101 102
	 * ID to use in plugin.xml to contribute to the top toolbar.
102 103
	 */
103 104
	public final static String TOP_TOOLBAR_ID = "TXMEditorTopToolBar"; //$NON-NLS-1$
104 105
	public final static String BOTTOM_TOOLBAR_ID = "TXMEditorBottomToolBar"; //$NON-NLS-1$
106
	
105 107
	//FIXME: SJ: bad idea to use the ID as title, need to change the system
106 108
	public final static String COMPUTING_PARAMETERS_GROUP_ID = TXMUIMessages.parameters;
107 109

  
......
152 154
	 */
153 155
	protected Composite bottomToolBarContainer;
154 156

  
157
	/**
158
	 * Computing tool item button.
159
	 */
160
	protected ToolItem computeButton;
155 161

  
156 162
	/**
157 163
	 * To keep track of the parameters used for the last computing and updates only the widgets if a parameter has changed. 
......
188 194

  
189 195

  
190 196
	/**
191
	 * 
197
	 * Default constructor.
192 198
	 */
193 199
	public TXMEditor() {
194 200
		super();
......
200 206
	 */
201 207
	public TXMEditor(TXMResult result) {
202 208
		this();
203
		this.setInput(new TXMResultEditorInput<TXMResult>(result));
209
		this.setInput(new TXMResultEditorInput<TXMResult>(result)); // FIXME: SJ: the input is defined twice, on time here and one time in init(), need to see if we still the assignation here in the constructor
204 210
	}
205 211

  
206 212

  
......
267 273
				//					getResult().removeResultListener(TXMEditor.this);
268 274
				//				}
269 275

  
270
				if (partRef.getId().equals(TXMEditor.this.getClass().getName())) { // called after this.doSave() 
276
				if (partRef.getId().equals(TXMEditor.this.getClass().getName())) { // called after this.doSave()
277
					
271 278
					//System.out.println("EVENT partClosed");
272
					for (TXMEditorExtension<T> b : extensions) {
279
					for (TXMEditorExtension<T> extension : extensions) {
273 280
						try {
274
							if (b.isDirty()) b.discardChanges();
281
							if (extension.isDirty()) {
282
								extension.discardChanges();
283
							}
275 284
						} catch (Exception e) {
276 285
							// TODO Auto-generated catch block
277 286
							e.printStackTrace();
......
316 325
		return firstLineComposite;
317 326
	}
318 327

  
319
	public boolean isDisposed() {
320
		return resultArea == null || resultArea.isDisposed();
321
	}
322 328

  
329
	/**
330
	 * Gets the shell of the parent composite if exists and not disposed otherwise the Display default active shell.
331
	 * @return
332
	 */
323 333
	public Shell getShell() {
324 334
		if (parent !=null && !parent.isDisposed()) {
325 335
			return parent.getShell();
......
362 372

  
363 373
			this.topToolBar = new TXMEditorToolBar(this, this.firstLineComposite, this.extendedParametersComposite, SWT.FLAT | SWT.RIGHT, TOP_TOOLBAR_ID);
364 374

  
375
			// store the Compute button to access if later, especially from sublcasses
376
			this.computeButton = this.topToolBar.getItemByContributionId(TOP_TOOLBAR_COMPUTE_BUTTON_ID);
365 377

  
366 378
			// computing parameters components
367 379
			boolean showExtendedParameters = false;
......
597 609
	public void setDirty(boolean dirty) {
598 610
		this.dirty = dirty;
599 611

  
600
		// FIXME: old version
601
		//this.result.setDirty(dirty);
602

  
603
		//		ToolBarManager manager = new ToolBarManager(this.topToolBar);
604
		//		IContributionItem[] items = manager.getItems(); 
605

  
606

  
607 612
		// enable/disable the compute button according to dirty state of the editor
608
		ToolItem computeButton = this.topToolBar.getItemByContributionId(TOP_TOOLBAR_COMPUTE_BUTTON_ID); //$NON-NLS-1$
609
		if (computeButton !=null) {
610
			computeButton.setEnabled(dirty);
613
		if (this.computeButton != null && !this.computeButton.isDisposed()) {
614
			this.computeButton.setEnabled(dirty);
611 615
		}
612 616

  
613

  
614
		//		for(Control c : this.topToolBar.getChildren()) {
615
		//		    //c.setEnabled(enabled);
616
		//			System.out.println("TXMEditor.setDirty(): " + c);
617
		//		}
618

  
619 617
		firePropertyChange(IEditorPart.PROP_DIRTY);
620 618
		CorporaView.refreshObject(this.result);
621 619
	}
......
625 623

  
626 624
		boolean dirty = this.dirty;
627 625

  
628
		//boolean dirty = false;
629

  
630
		//		if (this.getResult() != null) { //TODO see what to do with dirty results in TXMEditor
631
		//			// if the result has never been computed, the editor is not dirty ->  no * shown
632
		//			//dirty = this.getResult().isDirty() && this.getResult().hasBeenComputedOnce();
633
		//		}
634

  
635
		// FIXME: SJ: tests
636
		//dirty = this.getResult().isDirty() && this.getResult().hasBeenComputedOnce();
637

  
638

  
639

  
640
		for (TXMEditorExtension<T> b : extensions) {
626
		for (TXMEditorExtension<T> extension : this.extensions) {
641 627
			try {
642
				dirty = dirty || b.isDirty();
628
				dirty = dirty || extension.isDirty();
643 629
			} catch (Exception e) {
644
				// TODO Auto-generated catch block
645 630
				e.printStackTrace();
646 631
			}
647 632
		}
......
649 634
	}
650 635

  
651 636
	@Override
637
	public boolean isSaveOnCloseNeeded() {
638
		boolean needed = false;
639
		
640
		for (TXMEditorExtension<T> extension : this.extensions) {
641
			try {
642
				needed = needed || extension.isSaveOnCloseNeeded();
643
			} catch (Exception e) {
644
				e.printStackTrace();
645
			}
646
		}
647
		return needed;
648
		
649
	}
650
	
651

  
652
	
653
	@Override
652 654
	public void setFocus() {
653 655
		// FIXME SJ: this code leads to a bug, the focus must not be regiven to the main parameter after each computing
654 656
		//		if (mainParametersComposite != null && !mainParametersComposite.isDisposed()) {
......
657 659
		CorporaView.focus(this.getResult());
658 660
	}
659 661

  
662
	
660 663
	@SuppressWarnings("unchecked")
661 664
	@Override
662 665
	public TXMResultEditorInput<T> getEditorInput() {
......
728 731

  
729 732

  
730 733
	/**
734
	 * Opens a popup to inform that the result has been manually edited.
735
	 * @return
736
	 */
737
	public boolean promptResultEditedAlert()	{
738
		return MessageDialog.openQuestion(this.getShell(), "Warning", "The result have been edited. Changes will be lost. Do you want to continue?");
739
	}
740
	
741
	/**
731 742
	 * Synchronizes the result data from the editor data.
732 743
	 */
733 744
	public void synchronizeResultFromEditor()	{
734
		
745

  
746
		// subclasses manual result updating from editor fields
735 747
		Log.finest("TXMEditor.syncrhonizeResultFromEditor(): " + this.getClass().getSimpleName() + ": manually updating result from editor."); //$NON-NLS-1$
736
		this.updateResultFromEditor(); // subclasses manual result updating from editor fields
748
		this.updateResultFromEditor();
737 749

  
750
		 // auto updating result from Parameter annotations in result <=> editor
738 751
		Log.finest("TXMEditor.syncrhonizeResultFromEditor(): " + this.getClass().getSimpleName() + ": auto updating result from editor."); //$NON-NLS-1$
739
		this.autoUpdateResultFromEditorParameters(); // auto updating result from Parameter annotations in result <=> editor
752
		this.autoUpdateResultFromEditorParameters();
740 753

  
741 754
		// Stores the last parameters before the computing to later auto-update the Widgets only if some parameters have changed 
742 755
		this.setLastComputingParameters(this.getResult().getLastParametersFromHistory());
......
768 781

  
769 782
				try {
770 783
					JobsTimer.start();
784
					
785
					// FIXME: SJ: tests
786
					//showBusy(true);
787
					
771 788
					this.syncExec(new Runnable() {
772 789
						@Override
773 790
						public void run() {
774 791
							if(update)	{
775 792

  
776 793
								if (TXMEditor.this.getResult().isAltered()) {
777
									if (!MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), "Warning", "The result have been edited. Changes will be lost. Do you want to continue?")) {
794
									if (!promptResultEditedAlert()) {
778 795
										setCanceled(true);
779 796
									}
780 797
								}
781 798

  
782 799
								synchronizeResultFromEditor();
783

  
784
								//								// FIXME: DEbug
785
								//								Log.finest("TXMEditor.compute(): " + TXMEditor.this.getClass().getSimpleName() + ": manually updating result from editor."); //$NON-NLS-1$
786
								//								updateResultFromEditor(); // subclasses manual result updating from editor fields
787
								//								// FIXME: DEbug
788
								//								Log.finest("TXMEditor.compute(): " + TXMEditor.this.getClass().getSimpleName() + ": auto updating result from editor."); //$NON-NLS-1$
789
								//								
790
								//								autoUpdateResultFromEditorParameters(); // auto updating result from Parameter annotations in result <=> editor
791
								//
792
								//								// Stores the last parameters before the computing to later auto-update the Widgets only if some parameters have changed 
793
								//								setLastComputingParameters(TXMEditor.this.getResult().getLastParametersFromHistory());
794 800
							}
795 801
						}
796 802
					});
......
817 823
						@Override
818 824
						public void run() {
819 825
							try {
820
								/// FIXME: SJ: dirty state tests
821
								//								setDirty(false);
822

  
823 826
								refresh(update);
824 827

  
825 828
								// focus in the main widget 
......
1625 1628
		return editors;
1626 1629
	}
1627 1630

  
1628
	@Override
1629
	public boolean isSaveOnCloseNeeded() {
1630
		return false;
1631
	/**
1632
	 * Gets the Compute Tool item button.
1633
	 * @return the computeButton
1634
	 */
1635
	protected ToolItem getComputeButton() {
1636
		return computeButton;
1631 1637
	}
1632
	
1633 1638

  
1639
	/**
1640
	 * Remove the Compute Tool item button.
1641
	 */
1642
	protected void removeComputeButton()	{
1643
		if (this.computeButton != null && !this.computeButton.isDisposed()) {
1644
			this.computeButton.dispose();
1645
		}
1646
	}
1634 1647

  
1635 1648
}
tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TableLinesViewerComparator.java (revision 1457)
4 4
package org.txm.rcp.editors;
5 5

  
6 6
import java.text.Collator;
7
import java.util.Date;
7 8
import java.util.List;
8 9

  
9 10
import org.eclipse.jface.viewers.TableViewer;
......
16 17
import org.eclipse.swt.widgets.TableColumn;
17 18

  
18 19
/**
19
 * Base abstract viewer comparator for table lines sorting.
20
 * Generic base viewer comparator for table lines sorting.
20 21
 * This comparator tries to determine the primitive type of the objects and compare according to it.
21 22
 * The method compare() is dedicated to be override by subclasses if more granularity is needed.
22 23
 * Subclasses can for example sort using the column index that is stored each time a sort is done.
......
97 98
			else if (Boolean.class.isInstance(cell1))	{
98 99
				result = ((Boolean)cell1).compareTo(((Boolean)cell2));
99 100
			}
101
			else if (Date.class.isInstance(cell1))	{
102
				result = ((Date)cell1).compareTo(((Date)cell2));
103
			}
100 104
		}
101 105
		
102 106
		// reverse if needed
tmp/org.txm.rcp/src/main/java/org/txm/rcp/adapters/TXMResultAdapter.java (revision 1457)
25 25
 */
26 26
public abstract class TXMResultAdapter extends WorkbenchAdapter {
27 27

  
28
	
28 29
	/**
29
	 * 
30
	 * Default constructor. 
30 31
	 */
31 32
	public TXMResultAdapter() {
32 33
		// TODO Auto-generated constructor stub
......
39 40

  
40 41
	@Override
41 42
	public String getLabel(Object result) {
42
		// FIXME: SJ: dirty tests
43 43
		String label = ((TXMResult) result).getCurrentName();
44 44

  
45 45
		IEditorPart editor = SWTEditorsUtils.getEditor((TXMResult) result);
46
//		// also look in multipage editors
47
//		if(editor == null)	{
48
//			editor = SWTEditorsUtils.getEditorInMultiPageEditor(((TXMResult) result));
49
//		}
50
		
51 46
		if(editor != null && editor.isDirty())	{
52
			label += " *";
47
			label += " *"; //$NON-NLS-1$
53 48
		}
54 49
		
55
		
56
//		if(((TXMResult) result).isDirty() && ((TXMResult) result).hasBeenComputedOnce())	{
57
//			label += " *";
58
//		}
59 50
		return label;
60 51
	}
61 52

  
......
66 57

  
67 58
	@Override
68 59
	public FontData getFont(Object element) {
69
		// highlight the node label of the current active editor
70
		if(element instanceof TXMResult && element == BaseAbstractHandler.getActiveEditorResult(null))	{
71
			FontData fontData = Display.getCurrent().getSystemFont().getFontData()[0];
72
			fontData.setStyle(SWT.BOLD);
73
			return fontData;
60
		
61
		FontData fontData = null;
62
		
63
		if(element instanceof TXMResult)	{
64

  
65
			fontData = Display.getCurrent().getSystemFont().getFontData()[0];
66
			
67
			// highlight the node label of the current active editor
68
			if(element == BaseAbstractHandler.getActiveEditorResult(null))	{
69
				fontData.setStyle(SWT.BOLD);
70
			}
71
			
72
			// display non-persisted result with italic font if the autosave result preference is disabled
73
			if(!TBXPreferences.getInstance().getBoolean(TBXPreferences.AUTO_PERSISTENCE_ENABLED) && !((TXMResult)element).isUserPersistable() && !((TXMResult)element).isInternalPersistable())	{
74
				fontData.setStyle(fontData.getStyle() | SWT.ITALIC);
75
			}
76

  
74 77
		}
75
		return null;
78
		
79
		return fontData;
76 80
	}
77 81

  
78 82
	@Override
tmp/org.txm.chartsengine.core/src/org/txm/chartsengine/core/results/ChartResult.java (revision 1457)
166 166

  
167 167
			// compute the result if needed
168 168
			if(super.compute(monitor, deepComputing))	{
169
				this.altered = false;
169 170
				// compute the chart
170 171
				return renderChart();
171 172
			}
......
228 229
			// Since the stack is shared by computing and rendering parameters, this.hasParameterChanged(ChartsEnginePreferences.CHART_TYPE) returns true because the parameter doesn't exist in the last stack entry filled only with the computing parameter
229 230
			// may need to fix this in another way:
230 231
			// Solution 1: store two stacks, one for computing parameters and another for rendering parameters
231
			// Solution 2: stop to dissociate rendering parameters and computing parameters. Maybe the best way but need to check in this dissociation is very useless
232
			// Solution 2: stop to dissociate rendering parameters and computing parameters. Maybe the best way but need to check if this dissociation is very useless
232 233
			// clear the last computing parameters
233 234
			if(this.parametersHistory.size() > 2)	{
234 235
				this.clearLastComputingParameters();
tmp/org.txm.chartsengine.jfreechart.rcp/src/org/txm/chartsengine/jfreechart/rcp/handlers/OpenJFCChartPropertiesEditor.java (revision 1457)
61 61
						@Override
62 62
						public void run() {
63 63
							((ChartPanel) chartEditor.getComposite().getChartComponent()).doEditChartProperties();
64
							chartEditor.getResult().setAltered();
64 65

  
65 66
						}
66 67
					});
tmp/org.txm.partition.rcp/src/org/txm/partition/rcp/editors/PartitionDimensionsEditor.java (revision 1457)
32 32
	@Override
33 33
	public void __createPartControl() {
34 34

  
35
		// remove the compute button
36
		this.removeComputeButton();
37
		
35 38
		// extend the tool bar
36 39
		new ToolItem(this.getToolBar(), SWT.SEPARATOR);
37 40
		this.sortByPartSize = new ToolItem(this.getToolBar(), SWT.CHECK);
tmp/org.txm.tigersearch.rcp/src/org/txm/tigersearch/editors/IndexExtension.java (revision 1457)
77 77
		return h;
78 78
	}
79 79

  
80
	@Override
81
	public boolean isSaveOnCloseNeeded() throws Exception {
82
		return true;
83
	}
84

  
80 85
}
tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java (revision 1457)
521 521
			lastParameters.put(name, f.get(this));
522 522
		}
523 523

  
524
		if(!appendToLastParameters)	{
524
		if(!appendToLastParameters && !lastParameters.isEmpty())	{
525 525
			this.parametersHistory.add(lastParameters);
526 526
		}
527 527

  
......
2107 2107
				this.dirty = false; // the computing was successful, the result is no more dirty
2108 2108
				this.hasBeenComputedOnce = true;
2109 2109
				
2110
				if (altered) {
2111
					System.out.println(NLS.bind("Warning {0} modifications have been lost.", this.getSimpleName()));
2110
				if (this.altered) {
2111
					Log.finest(NLS.bind("TXMResult.compute(): Warning {0} modifications have been lost.", this.getSimpleName()));
2112 2112
				}
2113 2113
				this.altered = false;
2114 2114
				
tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationExtension.java (revision 1457)
267 267
	}
268 268

  
269 269
	@Override
270
	public boolean isSaveOnCloseNeeded() throws Exception {
271
		return true;
272
	}
273
	
274
	@Override
270 275
	public void notifyDoSave() throws Exception {
271 276
		for (AnnotationArea aa : annotationAreas) {
272 277
			aa.save();
......
297 302
		h.add(Text.class);
298 303
		return h;
299 304
	}
305

  
306

  
300 307
}

Also available in: Unified diff