Révision 2533

tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/results/SetTXMResultPersistentState.java (revision 2533)
33 33
import org.eclipse.core.commands.ExecutionException;
34 34
import org.eclipse.ui.commands.IElementUpdater;
35 35
import org.eclipse.ui.menus.UIElement;
36
import org.txm.core.preferences.TXMPreferences;
37 36
import org.txm.core.results.TXMResult;
38 37
import org.txm.rcp.handlers.BaseAbstractHandler;
39 38
import org.txm.rcp.views.corpora.CorporaView;
40 39

  
41 40
/**
42
 * Swaps the persistence state of the selected TXM result nodes.
41
 * Swaps the persistence state of the selected TXM result node.
43 42
 * 
44 43
 * @author sjacquot
45 44
 * 
46 45
 */
47 46
public class SetTXMResultPersistentState extends BaseAbstractHandler implements IElementUpdater {
48

  
49

  
47
	
48
	
50 49
	@Override
51 50
	public Object execute(ExecutionEvent event) throws ExecutionException {
52

  
51
		
53 52
		// FIXME: multiple selection
54
		// FIXME: how to manage the checkbox state? 
55
//		List objects = this.getCorporaViewSelectedObjects(event);
56
//		if(objects != null)	{
57
//			for (int i = 0; i < objects.size(); i++) {
58
//				if(objects.get(i) instanceof TXMResult)	{
59
//					((TXMResult)objects.get(i)).swapPersistableState();
60
//				}
61
//			}
62
//			//CorporaView.refresh();
63
//			return null;
64
//		}
65
//		else	{
66
//			return super.logCanNotExecuteCommand(objects);
67
//		}
53
		// FIXME: how to manage the checkbox state?
54
		// List objects = this.getCorporaViewSelectedObjects(event);
55
		// if(objects != null) {
56
		// for (int i = 0; i < objects.size(); i++) {
57
		// if(objects.get(i) instanceof TXMResult) {
58
		// ((TXMResult)objects.get(i)).swapPersistableState();
59
		// }
60
		// }
61
		// //CorporaView.refresh();
62
		// return null;
63
		// }
64
		// else {
65
		// return super.logCanNotExecuteCommand(objects);
66
		// }
68 67
		
69 68
		// FIXME: single selection
70 69
		Object object = this.getCorporaViewSelectedObject(event);
71
		if(object instanceof TXMResult)	{
72
			TXMResult result = ((TXMResult)object);
70
		if (object instanceof TXMResult) {
71
			
72
			TXMResult result = ((TXMResult) object);
73 73
			result.swapUserPersistableState();
74 74
			
75 75
			CorporaView.refreshObject(result);
76
			//CorporaView.refresh();
76
			
77 77
			return null;
78 78
		}
79
		else	{
79
		else {
80 80
			return super.logCanNotExecuteCommand(object);
81 81
		}
82

  
82
		
83 83
	}
84

  
84
	
85
	// FIXME: SJ: became useless?
85 86
	/**
86 87
	 * Display the checked mark in the menu item when the menu is created
87 88
	 */
88 89
	@Override
89 90
	public void updateElement(UIElement element, Map parameters) {
90 91
		Object object = CorporaView.getFirstSelectedObject();
91
		//element.
92
		if(object != null && object instanceof TXMResult)	{
93
			element.setChecked(((TXMResult)object).isUserPersistable());
92
		// element.
93
		if (object != null && object instanceof TXMResult) {
94
			element.setChecked(((TXMResult) object).isUserPersistable());
94 95
		}
95 96
	}
96 97
}
tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorporaView.java (revision 2533)
615 615
			@Override
616 616
			public void run() {
617 617
				
618
				// FIXME: Debug
619
				// System.err.println("CorporaView.refreshObject(...).new Runnable() {...}.run(): refreshing node " + result);
620
				// System.err.println("CorporaView.refreshObject(...).new Runnable() {...}.run(): direct parent " + result.getParent());
621
				// System.err.println("CorporaView.refreshObject(...).new Runnable() {...}.run(): path " + result.getFullPathSimpleName());
622
				
623 618
				CorporaView corporaView = getInstance();
624
				corporaView.treeViewer.refresh(); // FIXME: without that the refresh sometimes doesn't work, need to investigate (after some test it may occurs when a hierarchy of more than one result
625
													 // is created. Need to refresh all the hierarchy result one by one?)
626 619
				
627
				corporaView.treeViewer.refresh(result);
620
				corporaView.treeViewer.refresh();
628 621
				
629 622
				try {
630 623
					CorporaView.expand(result.getParent());
tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java (revision 2533)
2758 2758
	/**
2759 2759
	 * Sets the user defined persistable state of the result.
2760 2760
	 * 
2761
	 * When making a result persistent, since a result is always created from its parent(s) and need them to be reconstructed, the state of all the parents in the branch will be set as persistent.
2762
	 * When making a result non persistent, its children will not be able to be reconstructed, so they are recursively set as non persistent.
2763
	 * Also, since some kind of TXM shortcut commands create some hidden results (e.g. Specificities on Partition that creates an hidden Lexical Table),
2764
	 * when making a result non persistent, all its parents that are hidden in the branch are set as non persistent (otherwise they wouldn't be deleted).
2765
	 * 
2766
	 * This method also flushes the result parameter node and so saves the persistence file.
2767
	 * 
2761 2768
	 * @param userPersistable the state to set
2762 2769
	 */
2763
	public void setUserPersistable(boolean userPersistable) {
2770
	protected void setUserPersistable(boolean userPersistable, boolean deep) {
2764 2771
		this.userPersistable = userPersistable;
2765 2772
		
2766 2773
		// 1- MANAGE THE PARENTS
2767
		// force persistable state of the parent if this result is set to persistable
2774
		// recursively force the persistable state of the parents if this result is set to persistable
2768 2775
		if (userPersistable && this.parent != null && !this.parent.isInternalPersistable()) {
2769
			this.parent.setUserPersistable(true);
2770
		} // un persist parent if it is not visible (internal persistable parent is always visible)
2771
		else if (!userPersistable && !parent.isVisible()) {
2772
			this.parent.setUserPersistable(false);
2776
			this.parent.setUserPersistable(true, false);
2773 2777
		}
2774
		
2778
		// recursively unpersist hidden parents
2779
		else if (!userPersistable && !this.parent.isVisible()) {
2780
			this.parent.setUserPersistable(false, false);
2781
		}
2775 2782
		// 2- MANAGE THE CHILDREN
2776
		// force non-persistable state of children if this result is set to non-persistable
2777
		if (!userPersistable) {
2778
			for (TXMResult child : getChildren()) {
2779
				child.setUserPersistable(userPersistable);
2783
		// recursively force non-persistable state of children if this result is set to non-persistable
2784
		// also transfer this result state to its children marked as "must be synchronized with parent"
2785
		if (deep) {
2786
			for (TXMResult child : this.getChildren()) {
2787
				if (!userPersistable || child.mustBeSynchronizedWithParent()) {
2788
					child.setUserPersistable(userPersistable);
2789
				}
2780 2790
			}
2781 2791
		}
2782 2792
		
......
2794 2804
	}
2795 2805
	
2796 2806
	/**
2807
	 * Sets the user defined persistable state of the result and its children.
2808
	 * 
2809
	 * @param userPersistable
2810
	 */
2811
	public void setUserPersistable(boolean userPersistable) {
2812
		this.setUserPersistable(userPersistable, true);
2813
	}
2814
	
2815
	/**
2797 2816
	 * Swaps the user persistable state.
2798 2817
	 * 
2799 2818
	 * propagate persistence to parent if necessary
tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java (revision 2533)
134 134
	 */
135 135
	public CA(LexicalTable lexicalTable) {
136 136
		this(null, lexicalTable);
137
		
138
		// FIXME: SJ: the CA must not create its own Eigenvalues bar chart. All must be done on the UI-side.
139
		// Eigenvalues eigenvalues = (Eigenvalues) this.getFirstChild(Eigenvalues.class);
140
		// if (eigenvalues == null) {
141
		// eigenvalues = new Eigenvalues(this);
142
		// }
143 137
	}
144 138
	
145 139
	/**
......
1051 1045
		return (LexicalTable) this.parent;
1052 1046
	}
1053 1047
	
1054
	// FIXME: SJ: fix to save the eigenvalues when the CA is saved
1055
	// FIXME: SJ: temporary fix to save the Eigenvalues. This method should be removed when the CAEditor will be managed in a better way
1056
	@Override
1057
	public void setUserPersistable(boolean userPersistable) {
1058
		super.setUserPersistable(userPersistable); // can not call super method, lead to infinite loop
1059
		
1060
		// deep persistence
1061
		for (TXMResult child : getChildren()) {
1062
			child.setUserPersistable(userPersistable);
1063
		}
1064
	}
1048
	// // FIXME: SJ: fix to save the eigenvalues when the CA is saved
1049
	// // FIXME: SJ: temporary fix to save the Eigenvalues. This method should be removed when the CAEditor will be managed in a better way
1050
	// @Override
1051
	// public void setUserPersistable(boolean userPersistable) {
1052
	// super.setUserPersistable(userPersistable); // can not call super method, lead to infinite loop
1053
	//
1054
	// // deep persistence
1055
	// for (TXMResult child : getChildren()) {
1056
	// child.setUserPersistable(userPersistable);
1057
	// }
1058
	// }
1065 1059
	
1066 1060
	
1067 1061
}
tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java (revision 2533)
118 118
	}
119 119
	
120 120
	
121
	// FIXME: SJ: fix to save the eigenvalues when the CA is saved
122
	// FIXME: SJ: temporary fix to save the Eigenvalues. This method should be removed when the CAEditor will be managed in a better way
123
	@Override
124
	public void setUserPersistable(boolean userPersistable) {
125
		this.userPersistable = userPersistable;
126
		
127
		// directly save and flush the preference
128
		try {
129
			if (this.isUserPersistable()) {
130
				this.autoSaveParametersFromAnnotations();
131
				this.saveParameters();
132
				TXMPreferences.flush(this);
133
			}
134
		}
135
		catch (Exception e) {
136
			// TODO Auto-generated catch block
137
			e.printStackTrace();
138
		}
139
	}
121
	// // FIXME: SJ: fix to save the eigenvalues when the CA is saved
122
	// // FIXME: SJ: temporary fix to save the Eigenvalues. This method should be removed when the CAEditor will be managed in a better way
123
	// @Override
124
	// public void setUserPersistable(boolean userPersistable) {
125
	// this.userPersistable = userPersistable;
126
	//
127
	// // directly save and flush the preference
128
	// try {
129
	// if (this.isUserPersistable()) {
130
	// this.autoSaveParametersFromAnnotations();
131
	// this.saveParameters();
132
	// TXMPreferences.flush(this);
133
	// }
134
	// }
135
	// catch (Exception e) {
136
	// // TODO Auto-generated catch block
137
	// e.printStackTrace();
138
	// }
139
	// }
140 140
	
141 141
}

Formats disponibles : Unified diff