package de.urszeidler.shr5.ecp.editor.widgets; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.observable.list.IObservableList; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.ui.celleditor.ExtendedDialogCellEditor; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.databinding.edit.EMFEditObservables; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.emf.edit.command.SetCommand; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; import org.eclipse.emf.edit.ui.celleditor.FeatureEditorDialog; import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; import org.eclipse.jface.layout.TreeColumnLayout; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.ColumnPixelData; import org.eclipse.jface.viewers.ColumnWeightData; import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Spinner; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.wb.swt.SWTResourceManager; import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import de.urszeidler.eclipse.shr5.AbstraktPersona; import de.urszeidler.eclipse.shr5.Fertigkeit; import de.urszeidler.eclipse.shr5.FertigkeitsGruppe; import de.urszeidler.eclipse.shr5.PersonaFertigkeit; import de.urszeidler.eclipse.shr5.PersonaFertigkeitsGruppe; import de.urszeidler.eclipse.shr5.PersonaMartialartStyle; import de.urszeidler.eclipse.shr5.Shr5Factory; import de.urszeidler.eclipse.shr5.Shr5Package; import de.urszeidler.eclipse.shr5.Shr5Package.Literals; import de.urszeidler.eclipse.shr5.Spezialisierung; import de.urszeidler.eclipse.shr5.Sprachfertigkeit; import de.urszeidler.eclipse.shr5.Wissensfertigkeit; import de.urszeidler.eclipse.shr5.util.AdapterFactoryUtil; import de.urszeidler.eclipse.shr5.util.ShadowrunTools; import de.urszeidler.eclipse.shr5Management.CharacterGenerator; import de.urszeidler.eclipse.shr5Management.KarmaGenerator; import de.urszeidler.eclipse.shr5Management.LifeModulesGenerator; import de.urszeidler.eclipse.shr5Management.ManagedCharacter; import de.urszeidler.eclipse.shr5Management.util.ShadowrunManagmentTools; import de.urszeidler.shr5.ecp.Activator; import de.urszeidler.shr5.ecp.editor.pages.Messages; import de.urszeidler.shr5.ecp.preferences.PreferenceConstants; import de.urszeidler.shr5.ecp.util.ShadowrunEditingTools; /** * */ public class PersonaFertigkeitenWidget extends Composite implements IPropertyChangeListener { private static final String EMPTY = ""; //$NON-NLS-1$ /** * */ public class SpinnerCellEditor extends CellEditor { public SpinnerCellEditor(Composite parent, int style) { super(parent, style); } public SpinnerCellEditor(Composite parent) { super(parent); } @Override protected Control createControl(Composite parent) { Spinner spinner = new Spinner(parent, SWT.NONE); return spinner; } @Override protected Object doGetValue() { return getControl().getSelection(); } @Override protected void doSetFocus() { getControl().setFocus(); } @Override public Spinner getControl() { return (Spinner)super.getControl(); } @Override protected void doSetValue(Object value) { getControl().setSelection((Integer)value); } } /** * */ public static class GroupWrapper { private List<Fertigkeit> entries = new ArrayList<Fertigkeit>(); private String name; public List<Fertigkeit> getEntries() { return entries; } public String getName() { return name; } } /** * @author urs */ public class FertigkeitsContentProvider implements ITreeContentProvider { private Object[] emtpty = {}; @Override public void dispose() { } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } @Override public Object[] getElements(Object inputElement) { return getChildren(inputElement); } @Override public Object[] getChildren(Object parentElement) { if (parentElement instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)parentElement; return fg.getFertigkeiten().toArray(); } else if (parentElement instanceof GroupWrapper) { GroupWrapper gw = (GroupWrapper)parentElement; return gw.entries.toArray(); } else if (parentElement instanceof Collection) { Collection<?> c = (Collection<?>)parentElement; return c.toArray(); } return emtpty; } @Override public Object getParent(Object element) { return null; } @Override public boolean hasChildren(Object element) { return getChildren(element).length > 0; } } protected DataBindingContext m_bindingContext; private FormToolkit toolkit;// = new FormToolkit(Display.getCurrent()); private AbstraktPersona persona; private ManagedCharacter character; private EditingDomain editingDomain; private TreeViewer treeViewer; private Composite composite; private IObservableList personaFertigkeiten; private IObservableList personaFertigkeitsGruppen; private boolean karmaMode = false; private boolean filterOnlyPersona; private String stringFilter; private boolean readOnly = false; private boolean skillsFixedByGroup = true; private IPreferenceStore store; private RGB backColor; private boolean changeDefaultColor; private Font boldFont; private boolean useBold; /** * Create the composite. * * @param parent * @param style */ public PersonaFertigkeitenWidget(Composite parent, int style) { super(parent, style); toolkit = new FormToolkit(Display.getCurrent()); addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { toolkit.dispose(); } }); createWidgets(); } public PersonaFertigkeitenWidget(Composite parent, int style, AbstraktPersona object, FormToolkit toolkit2, EditingDomain ed) { super(parent, style); toolkit = toolkit2; persona = object; editingDomain = ed; createWidgets(); } public PersonaFertigkeitenWidget(Composite parent, int style, ManagedCharacter character2, FormToolkit toolkit2, EditingDomain editingDomain2) { super(parent, style); toolkit = toolkit2; editingDomain = editingDomain2; character = character2; persona = character2.getPersona(); CharacterGenerator<?> chracterSource = character2.getChracterSource(); if (chracterSource instanceof KarmaGenerator) { // Shr5KarmaGenerator skg = (Shr5KarmaGenerator)chracterSource; karmaMode = true; if (chracterSource instanceof LifeModulesGenerator) { skillsFixedByGroup = false; } } createWidgets(); } @Override public void dispose() { store.removePropertyChangeListener(this); boldFont.dispose(); super.dispose(); } public static List<Object> createFertigkeitGroupsRoot(AbstraktPersona persona) { Collection<EObject> groups = ItemPropertyDescriptor.getReachableObjectsOfType(persona, Shr5Package.Literals.FERTIGKEITS_GRUPPE); Collection<EObject> skill = ItemPropertyDescriptor.getReachableObjectsOfType(persona, Shr5Package.Literals.FERTIGKEIT); GroupWrapper ungrouped = new GroupWrapper(); ungrouped.name = Messages.PersonaFertigkeitenWidget_ungrouped_skills; GroupWrapper knownGroup = new GroupWrapper(); knownGroup.name = Messages.PersonaFertigkeitenWidget_knowlege_skill; GroupWrapper languGoup = new GroupWrapper(); languGoup.name = Messages.PersonaFertigkeitenWidget_language_skill; for (EObject eObject : skill) { if (eObject instanceof Sprachfertigkeit) { Sprachfertigkeit wf = (Sprachfertigkeit)eObject; languGoup.entries.add(wf); } else if (eObject instanceof Wissensfertigkeit) { Wissensfertigkeit wf = (Wissensfertigkeit)eObject; knownGroup.entries.add(wf); } else if (eObject instanceof Fertigkeit) { Fertigkeit f = (Fertigkeit)eObject; if (!Shr5Package.Literals.FERTIGKEITS_GRUPPE__FERTIGKEITEN.equals(f.eContainingFeature())) { ungrouped.entries.add(f); } } } List<Object> list = new ArrayList<Object>(); list.addAll(groups); list.add(ungrouped); list.add(knownGroup); list.add(languGoup); return list; } private void createWidgets() { store = Activator.getDefault().getPreferenceStore(); store.addPropertyChangeListener(this); propertyChange(null); addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { store.removePropertyChangeListener(PersonaFertigkeitenWidget.this); boldFont.dispose(); } }); toolkit.adapt(this); toolkit.paintBordersFor(this); setLayout(new FillLayout(SWT.HORIZONTAL)); personaFertigkeiten = EMFEditObservables.observeList(editingDomain, persona, Literals.ABSTRAKT_PERSONA__FERTIGKEITEN); personaFertigkeitsGruppen = EMFEditObservables.observeList(editingDomain, persona, Literals.ABSTRAKT_PERSONA__FERTIGKEITS_GRUPPEN); composite = new Composite(this, SWT.NONE); toolkit.adapt(composite); toolkit.paintBordersFor(composite); TreeColumnLayout tcl_composite = new TreeColumnLayout(); composite.setLayout(tcl_composite); final EList<EAttribute> eAllAttributes = persona.eClass().getEAllAttributes(); treeViewer = new TreeViewer(composite, SWT.BORDER); treeViewer.setAutoExpandLevel(2); ViewerFilter filter = new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof Fertigkeit) { Fertigkeit f = (Fertigkeit)element; return eAllAttributes.contains(f.getAttribut()); } return true; } }; ViewerFilter filterOnlyPersonaFilter = new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (!filterOnlyPersona) return true; if (element instanceof Fertigkeit) { Fertigkeit fertigkeit = (Fertigkeit)element; PersonaFertigkeit personaFertigkeit = ShadowrunTools.findFertigkeit(fertigkeit, persona); boolean hasSkillGroup = false; if (parentElement instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)parentElement; hasSkillGroup = ShadowrunTools.findGruppe(fg, persona) != null; } return personaFertigkeit != null || hasSkillGroup; } else if (element instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)element; return ShadowrunTools.hasFertigkeitUnderGroup(fg, persona) || ShadowrunTools.findGruppe(fg, persona) != null; } return true; } }; ViewerFilter nameFilter = new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof Fertigkeit) if (stringFilter != null && !stringFilter.isEmpty()) { LabelProvider labelProvider = AdapterFactoryUtil.getInstance().getLabelProvider(); String name = labelProvider.getText(element); if (!name.contains(stringFilter)) return false; } return true; } }; treeViewer.setFilters(new ViewerFilter[]{ filter, filterOnlyPersonaFilter, nameFilter }); final Tree tree = treeViewer.getTree(); tree.setHeaderVisible(true); tree.setLinesVisible(true); toolkit.paintBordersFor(tree); TreeViewerColumn treeViewerNameColumn = new TreeViewerColumn(treeViewer, SWT.NONE); treeViewerNameColumn.setLabelProvider(new ColumnLabelProvider() { @Override public Font getFont(Object element) { if (!(element instanceof Fertigkeit) && useBold) return boldFont; return super.getFont(element); } @Override public Color getBackground(Object element) { if(changeDefaultColor) if (!(element instanceof Fertigkeit)) return SWTResourceManager.getColor(backColor); return super.getBackground(element); // return super.getBackground(element); } public Image getImage(Object object) { return ExtendedImageRegistry.getInstance().getImage(AdapterFactoryUtil.getInstance().getItemDelegator().getImage(object)); } public String getText(Object object) { if (object instanceof GroupWrapper) { GroupWrapper gw = (GroupWrapper)object; return gw.name; } return AdapterFactoryUtil.getInstance().getItemDelegator().getText(object); } }); TreeColumn trclmnName = treeViewerNameColumn.getColumn(); tcl_composite.setColumnData(trclmnName, new ColumnWeightData(50, 10, true)); trclmnName.setText(Messages.PersonaFertigkeitenWidget_groups_skills); TreeViewerColumn treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE); treeViewerColumn.setLabelProvider(new ColumnLabelProvider() { public String getText(Object object) { if (object instanceof Fertigkeit) { Fertigkeit fertigkeit = (Fertigkeit)object; PersonaFertigkeit personaFertigkeit = ShadowrunTools.findFertigkeit(fertigkeit, persona); if (personaFertigkeit != null && !personaFertigkeit.getSpezialisierungen().isEmpty()) return AdapterFactoryUtil.getInstance().getLabelProvider().getText(personaFertigkeit.getSpezialisierungen());// .toString(); } return EMPTY; } }); TreeColumn trclmnSpecs = treeViewerColumn.getColumn(); tcl_composite.setColumnData(trclmnSpecs, new ColumnPixelData(150, true, true)); trclmnSpecs.setText(Messages.PersonaFertigkeitenWidget_trclmnSpecs_text); treeViewerColumn.setEditingSupport(new EditingSupport(treeViewer) { @Override protected CellEditor getCellEditor(Object element) { if (element instanceof Fertigkeit) { final Fertigkeit fertigkeit = (Fertigkeit)element; final PersonaFertigkeit personaFertigkeit = ShadowrunTools.findFertigkeit(fertigkeit, persona); ExtendedDialogCellEditor cellEditor = new ExtendedDialogCellEditor(tree, AdapterFactoryUtil.getInstance().getLabelProvider()) { @Override protected Object openDialogBox(Control cellEditorWindow) { List<Spezialisierung> arrayList = new ArrayList<Spezialisierung>(fertigkeit.getSpezialisierungen()); ImmutableList<PersonaMartialartStyle> list2 = FluentIterable.from(persona.getMartialartStyles()).filter(new Predicate<PersonaMartialartStyle>() { @Override public boolean apply(PersonaMartialartStyle input) { return input!=null && input.getStyle()!=null && input.getStyle().getUsableWith().contains(fertigkeit); } }).toList(); arrayList.addAll(list2); FeatureEditorDialog featureEditorDialog = new FeatureEditorDialog(getShell(), AdapterFactoryUtil.getInstance() .getLabelProvider(), personaFertigkeit, Shr5Package.Literals.PERSONA_FERTIGKEIT__SPEZIALISIERUNGEN, Messages.PersonaFertigkeitenWidget_select_specialism, arrayList); int result = featureEditorDialog.open(); if (result == Window.OK) { EList<?> list = featureEditorDialog.getResult(); if (list.size() > 0) { return list; } } return null; } }; return cellEditor; } return null; } @Override protected boolean canEdit(Object element) { if (readOnly) return false; if (element instanceof Fertigkeit) { Fertigkeit fertigkeit = (Fertigkeit)element;// for #196 PersonaFertigkeit personaFertigkeit = ShadowrunTools.findFertigkeit(fertigkeit, persona); if (personaFertigkeit != null) { if (((Fertigkeit)element).eContainer() instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)((Fertigkeit)element).eContainer(); return ShadowrunTools.findGruppe(fg, persona) == null; } return true; } } return false; } @Override protected Object getValue(Object element) { if (element instanceof Fertigkeit) { Fertigkeit fertigkeit = (Fertigkeit)element; PersonaFertigkeit personaFertigkeit = ShadowrunTools.findFertigkeit(fertigkeit, persona); if (personaFertigkeit != null) return personaFertigkeit.getSpezialisierungen(); } return null; } @Override protected void setValue(Object element, Object value) { if (karmaMode) changeFertigkeitsValueByAdvacement(element, value); else if (element instanceof Fertigkeit) { Fertigkeit fertigkeit = (Fertigkeit)element; PersonaFertigkeit personaFertigkeit = ShadowrunTools.findFertigkeit(fertigkeit, persona); if (personaFertigkeit != null) { // CompoundCommand compoundCommand = new CompoundCommand(); if (value instanceof Collection) { Collection<?> c = (Collection<?>)value; Command create = SetCommand.create(editingDomain, personaFertigkeit, Shr5Package.Literals.PERSONA_FERTIGKEIT__SPEZIALISIERUNGEN, c); editingDomain.getCommandStack().execute(create); // EList<Object> ownerList = SetCommand.getOwnerList(personaFertigkeit, Shr5Package.Literals.PERSONA_FERTIGKEIT__SPEZIALISIERUNGEN); // ownerList.clear(); // ownerList.addAll(c); // for (Object object : c) { // if(!ownerList.contains(c)){ // Command command = AddCommand.create(editingDomain, personaFertigkeit, // Shr5Package.Literals.PERSONA_FERTIGKEIT__SPEZIALISIERUNGEN, object); // compoundCommand.append(command); // } // } } // editingDomain.getCommandStack().execute(compoundCommand); } } treeViewer.refresh(true); } }); TreeViewerColumn treeViewerValueColumn = new TreeViewerColumn(treeViewer, SWT.NONE); treeViewerValueColumn.setLabelProvider(new ColumnLabelProvider() { public Image getImage(Object object) { return null; } public String getText(Object element) { if (element instanceof Fertigkeit) { Fertigkeit f = (Fertigkeit)element; Integer fertigkeitValue = ShadowrunTools.findFertigkeitValue(f, persona); return fertigkeitValue.toString(); } else if (element instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)element; return ShadowrunTools.findFertigkeitValue(fg, persona) + EMPTY; } else if (element instanceof GroupWrapper) { return EMPTY; } return element == null ? EMPTY : element.toString(); } }); treeViewerValueColumn.setEditingSupport(new EditingSupport(treeViewer) { protected boolean canEdit(Object element) { if (readOnly) return false; if (element instanceof GroupWrapper) { return false; }// for #196 if (skillsFixedByGroup) if (element instanceof Fertigkeit) if (((Fertigkeit)element).eContainer() instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)((Fertigkeit)element).eContainer(); return ShadowrunTools.findGruppe(fg, persona) == null; } return true; } protected CellEditor getCellEditor(Object element) { if (element instanceof GroupWrapper) { return null; } SpinnerCellEditor spinnerCellEditor = new SpinnerCellEditor(tree); return spinnerCellEditor; } protected Object getValue(Object element) { if (element instanceof Fertigkeit) { Fertigkeit f = (Fertigkeit)element; return ShadowrunTools.findFertigkeitValue(f, persona); } else if (element instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)element; return ShadowrunTools.findFertigkeitValue(fg, persona); } return null; } protected void setValue(Object element, Object value) { if (karmaMode) changeFertigkeitsValueByAdvacement(element, value); else changeFertigkeitsValue(element, value); treeViewer.refresh(true); } }); TreeColumn trclmnValue = treeViewerValueColumn.getColumn(); tcl_composite.setColumnData(trclmnValue, new ColumnPixelData(50, true, true)); trclmnValue.setText(Messages.PersonaFertigkeitenWidget_value); TreeViewerColumn treeViewerTotalColumn = new TreeViewerColumn(treeViewer, SWT.NONE); treeViewerTotalColumn.setLabelProvider(new ColumnLabelProvider() { public Image getImage(Object element) { return null; } public String getText(Object element) { if (element instanceof Fertigkeit) { Fertigkeit f = (Fertigkeit)element; EAttribute attribut = f.getAttribut(); if (attribut != null) { Integer value = (Integer)persona.eGet(attribut); String attributeText = AdapterFactoryUtil.getInstance().getItemDelegator().getText(attribut); attributeText = attributeText !=null ? attributeText.substring(0, 3) : attributeText; Integer fertigkeitValue = ShadowrunTools.findFertigkeitValue(f, persona); if (fertigkeitValue < 1 && !f.isAusweichen()) return Messages.PersonaFertigkeitenWidget_not_valid; value = value + fertigkeitValue; return "[" + attributeText + "] : " + value.toString(); //$NON-NLS-1$ //$NON-NLS-2$ } } else if (element instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)element; return ShadowrunTools.findFertigkeitValue(fg, persona) + EMPTY; } else if (element instanceof GroupWrapper) { return EMPTY; } return element == null ? EMPTY : element.toString(); } }); TreeColumn trclmnTotalColumn = treeViewerTotalColumn.getColumn(); tcl_composite.setColumnData(trclmnTotalColumn, new ColumnPixelData(80, true, true)); trclmnTotalColumn.setText(Messages.PersonaFertigkeitenWidget_dice_pool); treeViewer.setContentProvider(new FertigkeitsContentProvider()); treeViewer.setInput(createFertigkeitGroupsRoot(persona)); m_bindingContext = initDataBindings(); } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // // return bindingContext; } public boolean isFilterOnlyPersona() { return filterOnlyPersona; } public void setFilterOnlyPersona(boolean filterOnlyPersona) { this.filterOnlyPersona = filterOnlyPersona; treeViewer.refresh(); treeViewer.expandToLevel(2); } /** * Changes the value of the fertigkeit by setting it. * * @param element the fertigkeit or guppe * @param value the value */ private void changeFertigkeitsValue(Object element, Object value) { if (element instanceof Fertigkeit) { Fertigkeit f = (Fertigkeit)element; PersonaFertigkeit personaFertigkeit = ShadowrunTools.findFertigkeit(f, persona); if (personaFertigkeit == null) { PersonaFertigkeit pf = Shr5Factory.eINSTANCE.createPersonaFertigkeit(); pf.setFertigkeit(f); pf.setStufe((Integer)value); personaFertigkeiten.add(pf); } else { if ((Integer)value == 0) { personaFertigkeiten.remove(personaFertigkeit); } else { Command cmd = SetCommand.create(editingDomain, personaFertigkeit, Shr5Package.Literals.STEIGERBAR__STUFE, value); editingDomain.getCommandStack().execute(cmd); persona.eNotify(new ENotificationImpl((InternalEObject)persona, Notification.SET, Shr5Package.Literals.ABSTRAKT_PERSONA__FERTIGKEITEN, null, null)); } } } else if (element instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)element; PersonaFertigkeitsGruppe personaFertigkeitsGruppe = ShadowrunTools.findGruppe(fg, persona); if (personaFertigkeitsGruppe == null) { PersonaFertigkeitsGruppe pfg = Shr5Factory.eINSTANCE.createPersonaFertigkeitsGruppe(); pfg.setGruppe(fg); pfg.setStufe((Integer)value); personaFertigkeitsGruppen.add(pfg); } else { if ((Integer)value == 0) { personaFertigkeitsGruppen.remove(personaFertigkeitsGruppe); } else { Command cmd = SetCommand.create(editingDomain, personaFertigkeitsGruppe, Shr5Package.Literals.STEIGERBAR__STUFE, value); editingDomain.getCommandStack().execute(cmd); persona.eNotify(new ENotificationImpl((InternalEObject)persona, Notification.SET, Shr5Package.Literals.ABSTRAKT_PERSONA__FERTIGKEITS_GRUPPEN, null, null)); } } } } /** * Changes the value of the fertigkeit by setting it. * * @param element the fertigkeit or guppe * @param value the value */ private void changeFertigkeitsValueByAdvacement(Object element, Object value) { if (element instanceof Fertigkeit) { Fertigkeit f = (Fertigkeit)element; if (value instanceof Collection<?>) { Collection<?> c = (Collection<?>)value; for (Object object : c) { if (object instanceof Spezialisierung) { Spezialisierung s = (Spezialisierung)object; ShadowrunManagmentTools.changeErlernbarByAdvacement(character, s); } } }else if (value instanceof Spezialisierung) { Spezialisierung s = (Spezialisierung)value; ShadowrunManagmentTools.changeErlernbarByAdvacement(character, s); } else ShadowrunEditingTools.changeFertigkeitByAdvacement(character, f, (Integer)value); } else if (element instanceof FertigkeitsGruppe) { FertigkeitsGruppe fg = (FertigkeitsGruppe)element; ShadowrunEditingTools.changeFertigkeitsGruppeByAdvacement(character, fg, (Integer)value); } } public void setStringFilter(String stringFilter) { this.stringFilter = stringFilter; treeViewer.refresh(); treeViewer.expandToLevel(2); } public void setReadOnly(boolean readOnly) { this.readOnly = readOnly; } @Override public void propertyChange(PropertyChangeEvent event) { backColor = PreferenceConverter.getColor(store, PreferenceConstants.SKILL_GROUP_BCK_COLOR); changeDefaultColor = store.getBoolean(PreferenceConstants.NO_DEFAULT_SKILL_GROUP_BCK_COLOR); FontData[] fontData = getFont().getFontData(); FontData boldFontData = new FontData(fontData[0].getName(), fontData[0].getHeight(), SWT.BOLD); boldFont = new Font(getDisplay(), boldFontData); useBold = store.getBoolean(PreferenceConstants.SKILL_GROUP_BOLT); } }