package org.chesmapper.view.gui; import java.awt.Color; import java.beans.PropertyChangeListener; import java.util.HashMap; import javax.swing.JComponent; import org.chesmapper.map.dataInterface.CompoundProperty; import org.chesmapper.map.dataInterface.CompoundPropertyOwner; import org.chesmapper.map.dataInterface.CompoundPropertyUtil; import org.chesmapper.map.dataInterface.DefaultNominalProperty; import org.chesmapper.map.dataInterface.NominalProperty; import org.chesmapper.map.dataInterface.NumericProperty; import org.chesmapper.map.dataInterface.SubstructureSmartsType; import org.chesmapper.map.dataInterface.CompoundPropertyUtil.NominalColoring; import org.chesmapper.view.cluster.Clustering; import org.chesmapper.view.gui.util.Highlighter; import org.mg.javalib.gui.property.ColorGradient; import org.mg.javalib.util.ArrayUtil; public interface ViewControler { public enum Style { wireframe, ballsAndSticks, dots } public enum DisguiseMode { solid, translucent, invisible } public static enum HighlightMode { ColorCompounds, Spheres; } public static final ColorGradient DEFAULT_COLOR_GRADIENT = new ColorGradient( CompoundPropertyUtil.getHighValueColor(), Color.WHITE, CompoundPropertyUtil.getLowValueColor()); public Color getHighlightColor(CompoundPropertyOwner m, CompoundProperty p, boolean textColor); public Color getHighlightColor(CompoundPropertyOwner m, CompoundProperty p, boolean textColor, boolean blackBackground); public DisguiseMode getDisguiseUnHovered(); public DisguiseMode getDisguiseUnZoomed(); public void setDisguiseUnHovered(DisguiseMode hide); public void setDisguiseUnZoomed(DisguiseMode hide); public void resetView(); public boolean isSpinEnabled(); public void setSpinEnabled(boolean spinEnabled); public boolean canChangeCompoundSize(boolean larger); public void changeCompoundSize(boolean larger); public int getCompoundSize(); public int getCompoundSizeMax(); public void setCompoundSize(int compoundSize); public HighlightMode getHighlightMode(); public void setHighlightMode(HighlightMode mode); public void setSphereSize(double size); public void setSphereTranslucency(double translucency); public Style getStyle(); public void setStyle(Style style); public HashMap<String, Highlighter[]> getHighlighters(); public void setHighlighter(Highlighter highlighter); public void setHighlighter(Highlighter highlighter, boolean showMessage); public void setHighlighter(CompoundProperty prop); public void setHighlighter(SubstructureSmartsType type); public Highlighter getHighlighter(); public Highlighter getHighlighter(SubstructureSmartsType type); public Highlighter getHighlighter(CompoundProperty p); public CompoundProperty getHighlightedProperty(); public void setSuperimpose(boolean superimpose); public boolean isSuperimpose(); public boolean isAllClustersSpreadable(); public boolean isSingleClusterSpreadable(); public boolean isHideHydrogens(); public void setHideHydrogens(boolean b); public static final String PROPERTY_HIGHLIGHT_CHANGED = "propertyHighlightChanged"; public static final String PROPERTY_SHOW_HYDROGENS = "propertyShowHydrogens"; public static final String PROPERTY_NEW_HIGHLIGHTERS = "propertyNewHighlighters"; public static final String PROPERTY_DENSITY_CHANGED = "propertyDensityChanged"; public static final String PROPERTY_SUPERIMPOSE_CHANGED = "propertySuperimposeChanged"; public static final String PROPERTY_DISGUISE_CHANGED = "propertyDisguiseChanged"; public static final String PROPERTY_SPIN_CHANGED = "propertySpinChanged"; public static final String PROPERTY_BACKGROUND_CHANGED = "propertyBackgroundChanged"; public static final String PROPERTY_FONT_SIZE_CHANGED = "propertyFontSizeChanged"; public static final String PROPERTY_COMPOUND_DESCRIPTOR_CHANGED = "propertyCompoundDescriptorChanged"; public static final String PROPERTY_HIGHLIGHT_MODE_CHANGED = "propertyHighlightModeChanged"; public static final String PROPERTY_HIGHLIGHT_COLORS_CHANGED = "propertyHighlightColorsChanged"; public static final String PROPERTY_ANTIALIAS_CHANGED = "propertyAntialiasChanged"; public static final String PROPERTY_HIGHLIGHT_LAST_FEATURE = "propertyHighlightLastFeature"; public static final String PROPERTY_STYLE_CHANGED = "propertyStyleChanged"; public static final String PROPERTY_FEATURE_FILTER_CHANGED = "propertyFeatureFilterChanged"; public static final String PROPERTY_FEATURE_SORTING_CHANGED = "propertyFeatureSortingChanged"; public static final String PROPERTY_COMPOUND_FILTER_CHANGED = "propertyCompoundFilterChanged"; public static final String PROPERTY_SINGLE_COMPOUND_SELECTION_ENABLED = "propertySingleCompoundSelectionEnabled"; public static final String PROPERTY_JITTERING_CHANGED = "propertyJitteringChanged"; public boolean isHighlighterLabelsVisible(); public void setHighlighterLabelsVisible(boolean selected); public static enum HighlightSorting { Max, Median, Min; } public void setHighlightSorting(HighlightSorting sorting); public HighlightSorting getHighlightSorting(); public void addViewListener(PropertyChangeListener l); public boolean isBlackgroundBlack(); public void setBackgroundBlack(boolean backgroudBlack); public void increaseFontSize(boolean increase); public void setFontSize(int fontsize); public int getFontSize(); static final CompoundProperty COMPOUND_INDEX_PROPERTY = new DefaultNominalProperty(null, "Compound Index", "no-desc"); static final CompoundProperty COMPOUND_SMILES_PROPERTY = new DefaultNominalProperty(null, "Compound SMILES", "no-desc"); public void setCompoundDescriptor(CompoundProperty prop); public CompoundProperty getCompoundDescriptor(); public void addIgnoreMouseMovementComponents(JComponent ignore); public void updateMouseSelection(boolean buttonDown); public void setHighlightColors(ColorGradient g, NumericProperty props[]); public void setHighlightColors(Color g[], NominalProperty props[]); public void setClusterColors(Color[] sequence); void setHighlightMatchColors(Color[] colors); public void setSelectLastSelectedHighlighter(); public boolean isAntialiasEnabled(); public void setAntialiasEnabled(boolean b); public void setHighlightLastFeatureEnabled(boolean b); public boolean isHighlightLastFeatureEnabled(); public void increaseSpinSpeed(boolean increase); public static enum FeatureFilter { None, NotSelectedForMapping, SelectedForMapping, UsedForMapping, Filled, Real, Endpoints; public static FeatureFilter[] validValues(Clustering clustering) { FeatureFilter f[] = new FeatureFilter[] { None, NotSelectedForMapping, SelectedForMapping }; if (clustering.isSkippingRedundantFeatures()) f = ArrayUtil.concat(f, new FeatureFilter[] { UsedForMapping }); if (clustering.isBMBFRealEndpointDataset(true)) f = ArrayUtil.concat(f, new FeatureFilter[] { Filled, Real, Endpoints }); else if (clustering.isBMBFRealEndpointDataset(false)) f = ArrayUtil.concat(f, new FeatureFilter[] { Real, Endpoints }); return f; } public String niceString() { switch (this) { case None: return "Show all features (no filter)"; case NotSelectedForMapping: return "Show features NOT selected for mapping"; case SelectedForMapping: return "Show features selected for mapping"; case UsedForMapping: return "Show features used for mapping (no redundant/single-valued features)"; case Filled: return "Show '_filled' features"; case Real: return "Show '_real' features"; case Endpoints: return "Show endpoint features"; } throw new IllegalStateException(); } } public void setFeatureFilter(FeatureFilter filter); public FeatureFilter getFeatureFilter(); public boolean isFeatureSortingEnabled(); public void setFeatureSortingEnabled(boolean b); public boolean isShowClusteringPropsEnabled(); public void showSortFilterDialog(); public void setSingleCompoundSelection(boolean b); public boolean isSingleCompoundSelection(); public void doMouseMoveWatchUpdates(Runnable runnable); public void clearMouseMoveWatchUpdates(boolean clearWatched); public NominalColoring getNominalColoring(); public void setNominalColoring(NominalColoring nominalColoringValue); public int getJitteringLevel(); public void setJitteringLevel(int level); public boolean canJitter(); // to remove // public void setZoomToSingleActiveCompounds(boolean b); // public void setCompoundFilter(CompoundFilter filter, boolean animate); // // public void useSelectedCompoundsAsFilter(String filterDescription, boolean animate); // // public CompoundFilter getCompoundFilter(); }