Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WiP #1796 - Header part shows no data and crashes #1797

Merged
merged 1 commit into from
Jul 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.eclipse.chemclipse.ux.extension.xxd.ui.Activator;
import org.eclipse.chemclipse.ux.extension.xxd.ui.l10n.ExtensionMessages;
import org.eclipse.chemclipse.ux.extension.xxd.ui.services.EditorServicesSupport;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.ComboFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
Expand All @@ -36,10 +37,11 @@ public void createFieldEditors() {

addField(new DirectoryFieldEditor(PreferenceSupplier.P_TIME_RANGE_TEMPLATE_FOLDER, ExtensionMessages.timeRangePath, getFieldEditorParent()));
addField(new ComboFieldEditor(PreferenceSupplier.P_EDITOR_TSD, ExtensionMessages.editorTSD, EditorServicesSupport.getAvailableEditors(ISupplierFileIdentifier.TYPE_TSD), getFieldEditorParent()));
addField(new BooleanFieldEditor(PreferenceSupplier.P_HEADER_DATA_USE_RICH_TEXT_EDITOR, "Rich Text Editor (Header Data)", getFieldEditorParent()));
}

@Override
public void init(IWorkbench workbench) {

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,11 @@ public class PreferenceSupplier extends AbstractPreferenceSupplier implements IP
public static final boolean DEF_OVERLAY_LOCK_ZOOM = false;
public static final String P_OVERLAY_FOCUS_SELECTION = "overlayFocusSelection";
public static final boolean DEF_OVERLAY_FOCUS_SELECTION = false;
/*
* Header Data
*/
public static final String P_HEADER_DATA_USE_RICH_TEXT_EDITOR = "headerDataUseRichTextEditor";
public static final boolean DEF_HEADER_DATA_USE_RICH_TEXT_EDITOR = false;
/*
* Scans
*/
Expand Down Expand Up @@ -1057,6 +1062,10 @@ public void initializeDefaults() {
putDefault(P_COLOR_SCHEME_PEAK_TRACES, DEF_COLOR_SCHEME_PEAK_TRACES);
putDefault(P_MAX_DISPLAY_PEAK_TRACES, DEF_MAX_DISPLAY_PEAK_TRACES);
putDefault(P_PEAK_TRACES_OFFSET_RETENTION_TIME, DEF_PEAK_TRACES_OFFSET_RETENTION_TIME);
/*
* Header Data
*/
putDefault(P_HEADER_DATA_USE_RICH_TEXT_EDITOR, DEF_HEADER_DATA_USE_RICH_TEXT_EDITOR);
/*
* Scans
*/
Expand Down Expand Up @@ -1549,6 +1558,11 @@ public static boolean isHideProcessMethodEntries() {
return INSTANCE().getBoolean(P_EDIT_HISTORY_HIDE_PROCESS_METHOD_ENTRIES, DEF_EDIT_HISTORY_HIDE_PROCESS_METHOD_ENTRIES);
}

public static boolean isHeaderDataUseRichTextEditor() {

return INSTANCE().getBoolean(P_HEADER_DATA_USE_RICH_TEXT_EDITOR, DEF_HEADER_DATA_USE_RICH_TEXT_EDITOR);
}

public static HeaderField getChromatogramEditorLabel() {

try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.eclipse.chemclipse.swt.ui.components.ISearchListener;
import org.eclipse.chemclipse.swt.ui.components.InformationUI;
import org.eclipse.chemclipse.swt.ui.components.SearchSupportUI;
import org.eclipse.chemclipse.ux.extension.xxd.ui.preferences.PreferenceSupplier;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.nebula.widgets.richtext.RichTextEditor;
import org.eclipse.swt.SWT;
Expand All @@ -40,6 +41,7 @@
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
Expand All @@ -61,7 +63,7 @@ public class ExtendedHeaderDataUI extends Composite implements IExtendedPartUI {
private AtomicReference<Button> buttonDelete = new AtomicReference<>();
private AtomicReference<HeaderDataListUI> tableViewer = new AtomicReference<>();
private AtomicReference<Text> miscellaneousControl = new AtomicReference<>();
private AtomicReference<RichTextEditor> findingsControl = new AtomicReference<>();
private AtomicReference<Control> findingsControl = new AtomicReference<>();
//
private IMeasurementInfo measurementInfo = null;

Expand Down Expand Up @@ -275,19 +277,59 @@ private void createTextFindings(TabFolder tabFolder) {
TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
tabItem.setText("Findings");
//
RichTextEditor richTextEditor = new RichTextEditor(tabFolder, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP);
richTextEditor.addModifyListener(new ModifyListener() {
Control editor;
boolean useRichTextEditor = isUseRichTextEditor();
if(useRichTextEditor) {
/*
* RTF
*/
RichTextEditor richTextEditor = new RichTextEditor(tabFolder, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP);
richTextEditor.addModifyListener(new ModifyListener() {

@Override
public void modifyText(ModifyEvent e) {
@Override
public void modifyText(ModifyEvent e) {

if(measurementInfo != null) {
measurementInfo.setFindings(richTextEditor.getText().trim());
if(measurementInfo != null) {
measurementInfo.setFindings(richTextEditor.getText().trim());
}
}
}
});
tabItem.setControl(richTextEditor);
findingsControl.set(richTextEditor);
});
editor = richTextEditor;
} else {
/*
* ASCII
*/
Text plainTextEditor = new Text(tabFolder, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.WRAP);
plainTextEditor.addModifyListener(new ModifyListener() {

@Override
public void modifyText(ModifyEvent e) {

if(measurementInfo != null) {
measurementInfo.setFindings(plainTextEditor.getText().trim());
}
}
});
editor = plainTextEditor;
}
//
tabItem.setControl(editor);
findingsControl.set(editor);
}

private boolean isUseRichTextEditor() {

boolean useRichTextEditor = PreferenceSupplier.isHeaderDataUseRichTextEditor();
if(useRichTextEditor) {
/*
* TODO: Check if WebKit is available - otherwise disable the rich text option
* ---
* org.eclipse.swt.SWTError: No more handles because there is no underlying browser available.
* Please ensure that WebKit with its GTK 3.x/4.x bindings is installed.
*/
}
//
return useRichTextEditor;
}

private void addDeleteMenuEntry(Shell shell, ITableSettings tableSettings) {
Expand Down Expand Up @@ -384,11 +426,21 @@ private void updateData() {
* Tabs
*/
miscellaneousControl.get().setText(measurementInfo.getMiscInfo());
findingsControl.get().setText(measurementInfo.getFindings());
updateFindings(measurementInfo.getFindings());
} else {
tableViewer.get().setInput(null);
miscellaneousControl.get().setText("");
findingsControl.get().setText("");
updateFindings("");
}
}

private void updateFindings(String content) {

Control control = findingsControl.get();
if(control instanceof RichTextEditor richTextEditor) {
richTextEditor.setText(content);
} else if(control instanceof Text plainTextEditor) {
plainTextEditor.setText(content);
}
}

Expand Down