package org.goko.tools.viewer.jogl.preferences.performances; import java.util.List; import javax.inject.Inject; import org.apache.commons.collections.CollectionUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.goko.common.preferences.GkFieldEditorPreferencesPage; import org.goko.common.preferences.fieldeditor.preference.BooleanFieldEditor; import org.goko.common.preferences.fieldeditor.preference.ColorFieldEditor; import org.goko.common.preferences.fieldeditor.preference.ComboFieldEditor; import org.goko.core.common.exception.GkException; import org.goko.core.config.GokoPreference; import org.goko.tools.viewer.jogl.camera.AbstractCamera; import org.goko.tools.viewer.jogl.preferences.JoglViewerPreference; import org.goko.tools.viewer.jogl.service.IJoglViewerService; /** * Jogl viewer preferences page * * @author PsyKo * */ public class JoglViewerPreferencePage extends GkFieldEditorPreferencesPage { @Inject private IJoglViewerService joglviewerService; public JoglViewerPreferencePage() { setDescription("Configure the 3D viewer component."); setTitle("Viewer"); setPreferenceStore(JoglViewerPreference.getInstance()); } /** (inheritDoc) * @see org.goko.common.preferences.GkPreferencesPage#createPreferencePage(org.eclipse.swt.widgets.Composite) */ @Override protected void createPreferencePage(Composite parent) throws GkException { Group grpPerformances = new Group(parent, SWT.NONE); grpPerformances.setLayout(new GridLayout(1, false)); grpPerformances.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); grpPerformances.setText("Performances"); ComboFieldEditor comboFieldEditor = new ComboFieldEditor(grpPerformances, SWT.READ_ONLY); comboFieldEditor.setLabel("Multisampling :"); String[][] lstMultiSampling = new String[][]{{"1x (Fastest)", "1"} , {"2x","2"}, {"4x","4"}, {"8x (Nicest)","8"}}; comboFieldEditor.setPreferenceName(JoglViewerPreference.MULTISAMPLING); comboFieldEditor.setEntry(lstMultiSampling); GokoPreference.getInstance().getLengthUnit(); BooleanFieldEditor showFpsFieldEditor = new BooleanFieldEditor(grpPerformances, SWT.NONE); showFpsFieldEditor.setPreferenceName(JoglViewerPreference.SHOW_FPS); showFpsFieldEditor.setLabel("Show FPS"); Group grpMisc = new Group(parent, SWT.NONE); grpMisc.setLayout(new GridLayout(1, false)); grpMisc.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); grpMisc.setText("Misc."); ColorFieldEditor backgroundColorFieldEditor = new ColorFieldEditor(grpMisc, SWT.NONE); backgroundColorFieldEditor.setPreferenceName(JoglViewerPreference.BACKGROUND_COLOR); backgroundColorFieldEditor.setLabel("Background"); ComboFieldEditor defaultCameraFieldEditor = new ComboFieldEditor(grpMisc, SWT.READ_ONLY); defaultCameraFieldEditor.setLabel("Default view"); defaultCameraFieldEditor.setEntry(getAvailableCamera()); defaultCameraFieldEditor.setPreferenceName(JoglViewerPreference.DEFAULT_CAMERA); addField(comboFieldEditor); addField(showFpsFieldEditor); addField(backgroundColorFieldEditor); addField(defaultCameraFieldEditor); } private String[][] getAvailableCamera() throws GkException{ List<AbstractCamera> supportedCamera = joglviewerService.getSupportedCamera(); int cameraCount = CollectionUtils.size(supportedCamera); String[][] result = new String[cameraCount][2]; int i = 0; for (AbstractCamera camera : supportedCamera) { result[i][0] = camera.getLabel(); result[i][1] = camera.getId(); i++; } return result; } }