Skip to content
Snippets Groups Projects
Commit f496fc6b authored by Andreas Bayha's avatar Andreas Bayha
Browse files

Annotations: Factored out AnnotationsFXUtils

Background color logic is now factored out of the UI provider an
reusable.

Issue-Ref: 4014
Issue-Url: https://af3-developer.fortiss.org/issues/4014


Signed-off-by: default avatarAndreas Bayha <bayha@fortiss.org>
parent 23d046ad
No related branches found
No related tags found
1 merge request!1254014
AnnotationFxViewPart.java ca1548c49aa3842a9436262531464ba345b83688 YELLOW
AnnotationViewFXController.java 3618e62b47054754708a5e6e6df6895757816d84 YELLOW
AnnotationsFXUtils.java f34cfa95b26282d86c7425b7ab05f3c5d91feb80 RED
ColumnHandle.java 761c2517b3f3e4725feb7ce7e8d5927ba191a4bb YELLOW
FXAnnotationFilterContentProvider.java 90620e61e5c91669da26c0564527e0b4a31e4b9d YELLOW
......@@ -18,9 +18,8 @@ package org.fortiss.tooling.base.ui.annotation.view.fx;
import static java.util.Collections.emptyList;
import static java.util.Collections.sort;
import static java.util.stream.Collectors.toList;
import static javafx.scene.paint.Color.BISQUE;
import static javafx.scene.paint.Color.LIGHTGREY;
import static javafx.scene.paint.Color.LIGHTSEAGREEN;
import static org.fortiss.tooling.base.ui.annotation.view.fx.AnnotationsFXUtils.SELECTED_ANNOTATION_BACKGROUND_COLOR;
import static org.fortiss.tooling.base.ui.annotation.view.fx.AnnotationsFXUtils.getBackgroundColorForEntry;
import static org.fortiss.tooling.base.ui.annotation.view.fx.FXAnnotationFilterContentProvider.HIERARCHY_LEVELS_ALL;
import static org.fortiss.tooling.base.ui.annotation.view.fx.FXAnnotationFilterContentProvider.HIERARCHY_LEVELS_CURRENT;
import static org.fortiss.tooling.base.ui.annotation.view.fx.FXAnnotationFilterContentProvider.HIERARCHY_LEVELS_SELECTED_SUBMODEL;
......@@ -87,15 +86,6 @@ public class AnnotationViewFXController extends CompositeFXControllerBase<SplitP
/** Option text for the annotation type filter combo box. */
private static final String SHOW_ALL_ANNOTATION_TYPES = "Show all annotation types";
/** Background color for table cells, which are not editable and empty. */
public static final Color READ_ONLY_EMPTY_ANNOTATION_BACKGROUND_COLOR = LIGHTGREY;
/** Background color for table cells, which are not editable. */
public static final Color READ_ONLY_ANNOTATION_BACKGROUND_COLOR = BISQUE;
/** Background color for table cells of the selected element. */
protected static final Color SELECTED_ANNOTATION_BACKGROUND_COLOR = LIGHTSEAGREEN;
/** {@link TextField} for entering the filter pattern. */
@FXML
private TextField txtFilterText;
......@@ -517,22 +507,13 @@ public class AnnotationViewFXController extends CompositeFXControllerBase<SplitP
@Override
public Color getBackgroundColor(int column, AnnotationEntry element) {
if(element.getModelElement().equals(selected)) {
return READ_ONLY_EMPTY_ANNOTATION_BACKGROUND_COLOR;
return SELECTED_ANNOTATION_BACKGROUND_COLOR;
}
if(column > 1 && colIdxAnnotationMap.containsKey(column)) {
IAnnotatedSpecification spec =
colIdxAnnotationMap.get(column).getAnnotatedSpecification();
IAnnotationValueProvider<IAnnotatedSpecification> valueProvider =
element.getAnnotationValueProvider(spec.getClass());
if(valueProvider != null && valueProvider.getAnnotationValue(spec) != null &&
!isEditable(column, element)) {
return READ_ONLY_ANNOTATION_BACKGROUND_COLOR;
}
if(!isEditable(column, element)) {
return READ_ONLY_ANNOTATION_BACKGROUND_COLOR;
}
Class<IAnnotatedSpecification> specType =
colIdxAnnotationMap.get(column).getAnnotatedSpecificationType();
return getBackgroundColorForEntry(element, specType);
}
return super.getBackgroundColor(column, element);
......
/*-------------------------------------------------------------------------+
| Copyright 2020 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.base.ui.annotation.view.fx;
import static javafx.scene.paint.Color.BISQUE;
import static javafx.scene.paint.Color.LIGHTGREY;
import static javafx.scene.paint.Color.LIGHTSEAGREEN;
import static javafx.scene.paint.Color.WHITE;
import static org.eclipse.swt.widgets.Display.getCurrent;
import org.eclipse.swt.graphics.Device;
import org.fortiss.tooling.base.annotation.AnnotationEntry;
import org.fortiss.tooling.base.annotation.valueprovider.IAnnotationValueProvider;
import org.fortiss.tooling.base.model.element.IAnnotatedSpecification;
import javafx.scene.paint.Color;
/**
* Utils for the FX implementation of the annotations view.
*
* @author bayha
*/
public class AnnotationsFXUtils {
/** Background color for table cells, which are not editable and empty. */
public static final Color READ_ONLY_EMPTY_ANNOTATION_BACKGROUND_COLOR = LIGHTGREY;
/** SWT background color for table cells, which are not editable and empty. */
@Deprecated
public static final org.eclipse.swt.graphics.Color READ_ONLY_EMPTY_ANNOTATION_BACKGROUND_COLOR_SWT =
convertFXColortoSWT(READ_ONLY_EMPTY_ANNOTATION_BACKGROUND_COLOR);
/** Background color for table cells, which are not editable. */
public static final Color READ_ONLY_ANNOTATION_BACKGROUND_COLOR = BISQUE;
/** Background color for table cells of the selected element. */
protected static final Color SELECTED_ANNOTATION_BACKGROUND_COLOR = LIGHTSEAGREEN;
/**
* @param annotationEntry
* @param annotationType
* @return
*/
public static Color getBackgroundColorForEntry(AnnotationEntry annotationEntry,
Class<? extends IAnnotatedSpecification> annotationType) {
IAnnotationValueProvider<IAnnotatedSpecification> valueProvider =
annotationEntry.getAnnotationValueProvider(annotationType);
IAnnotatedSpecification specification = annotationEntry.getSpecification(annotationType);
if(valueProvider != null && valueProvider.getAnnotationValue(specification) != null &&
!valueProvider.canEdit(specification)) {
return READ_ONLY_ANNOTATION_BACKGROUND_COLOR;
}
if(valueProvider == null || !valueProvider.canEdit(specification)) {
return READ_ONLY_EMPTY_ANNOTATION_BACKGROUND_COLOR;
}
return WHITE;
}
/**
* @param annotationEntry
* @param annotationType
* @param defaultColor
* @return
*/
@Deprecated
public static org.eclipse.swt.graphics.Color getSWTBackgroundColorForEntry(
AnnotationEntry annotationEntry,
Class<? extends IAnnotatedSpecification> annotationType,
org.eclipse.swt.graphics.Color defaultColor) {
Color bgCol = getBackgroundColorForEntry(annotationEntry, annotationType);
if(bgCol.equals(WHITE)) {
return defaultColor;
}
return convertFXColortoSWT(bgCol);
}
/**
* @param bgCol
* @return
*/
private static org.eclipse.swt.graphics.Color convertFXColortoSWT(Color bgCol) {
Device device = getCurrent();
int red = (int)bgCol.getRed();
int green = (int)bgCol.getGreen();
int blue = (int)bgCol.getBlue();
return new org.eclipse.swt.graphics.Color(device, red, green, blue);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment