From ec75d76dd243529e83f277acd6e1b07d5fcb833f Mon Sep 17 00:00:00 2001 From: Thomas Sander Date: Thu, 25 Jul 2024 12:30:49 +0200 Subject: [PATCH 1/2] fixed issue with wrongly highlighted atom when converting H to non-H --- .../gui/editor/GenericEditorArea.java | 139 ++++++++---------- 1 file changed, 60 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/actelion/research/gui/editor/GenericEditorArea.java b/src/main/java/com/actelion/research/gui/editor/GenericEditorArea.java index 2e49c39b..fee12aa1 100644 --- a/src/main/java/com/actelion/research/gui/editor/GenericEditorArea.java +++ b/src/main/java/com/actelion/research/gui/editor/GenericEditorArea.java @@ -46,12 +46,10 @@ import com.actelion.research.gui.hidpi.HiDPIHelper; import com.actelion.research.util.ColorHelper; -import java.awt.*; import java.awt.geom.Point2D; import java.io.File; import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; import java.util.TreeMap; public class GenericEditorArea implements GenericEventListener { @@ -148,11 +146,13 @@ public class GenericEditorArea implements GenericEventListener { private static IReactionMapper sMapper; private static String[][] sReactionQueryTemplates; + private final int mMaxAVBL; private int mMode, mChainAtoms, mCurrentTool, mCustomAtomicNo, mCustomAtomMass, mCustomAtomValence, mCustomAtomRadical, mCurrentHiliteAtom, mCurrentHiliteBond, mPendingRequest, mEventsScheduled, mFirstAtomKey, - mCurrentCursor, mReactantCount, mUpdateMode, mDisplayMode, mAtom1, mAtom2, mMaxAVBL, mAllowedPseudoAtoms; + mCurrentCursor, mReactantCount, mUpdateMode, mDisplayMode, mAtom1, mAtom2, mAllowedPseudoAtoms; private int[] mChainAtom, mFragmentNo, mHiliteBondSet; - private double mX1, mY1, mX2, mY2, mWidth, mHeight, mUIScaling, mTextSizeFactor; + private final double mUIScaling; + private double mX1, mY1, mX2, mY2, mWidth, mHeight, mTextSizeFactor; private double[] mX, mY, mChainAtomX, mChainAtomY; private boolean mAltIsDown, mShiftIsDown, mMouseIsDown, mIsAddingToSelection, mAtomColorSupported, mAllowQueryFeatures, mAllowFragmentChangeOnPasteOrDrop; @@ -169,9 +169,9 @@ public class GenericEditorArea implements GenericEventListener { private GenericPolygon mLassoRegion; private ArrayList mListeners; private IClipboardHandler mClipboardHandler; - private StringBuilder mAtomKeyStrokeBuffer; - private GenericUIHelper mUIHelper; - private GenericCanvas mCanvas; + private final StringBuilder mAtomKeyStrokeBuffer; + private final GenericUIHelper mUIHelper; + private final GenericCanvas mCanvas; /** * @param mol an empty or valid stereo molecule @@ -358,7 +358,7 @@ public void paintContent(GenericDrawContext context) { mDepictor.paintDrawingObjects(context); } - if (mCurrentHiliteAtom != -1 && mAtomKeyStrokeBuffer.length() != 0) { + if (mCurrentHiliteAtom != -1 && !mAtomKeyStrokeBuffer.isEmpty()) { int x = (int)mMol.getAtomX(mCurrentHiliteAtom); int y = (int)mMol.getAtomY(mCurrentHiliteAtom); String s = mAtomKeyStrokeBuffer.toString(); @@ -951,7 +951,7 @@ private void showWarningMessage(String msg) { private void eventHappened(GenericMouseEvent e) { if (e.getWhat() == GenericMouseEvent.MOUSE_PRESSED) { - if (mCurrentHiliteAtom != -1 && mAtomKeyStrokeBuffer.length() != 0) + if (mCurrentHiliteAtom != -1 && !mAtomKeyStrokeBuffer.isEmpty()) expandAtomKeyStrokes(mAtomKeyStrokeBuffer.toString()); mAtomKeyStrokeBuffer.setLength(0); @@ -1045,8 +1045,8 @@ private void eventHappened(GenericMouseEvent e) { s2 = -s2; } for (int i = 0; i() { - public int compare(int[] fragmentDescriptor1, int[] fragmentDescriptor2) { - if ((mMode & (MODE_REACTION | MODE_MARKUSH_STRUCTURE)) != 0) { - if (fragmentDescriptor1[1] != fragmentDescriptor2[1]) { - return (fragmentDescriptor1[1] == 0) ? -1 : 1; - } + final Point2D.Double[] cog = fragmentCOG; + Arrays.sort(fragmentDescriptor, (fragmentDescriptor1, fragmentDescriptor2) -> { + if ((mMode & (MODE_REACTION | MODE_MARKUSH_STRUCTURE)) != 0) { + if (fragmentDescriptor1[1] != fragmentDescriptor2[1]) { + return (fragmentDescriptor1[1] == 0) ? -1 : 1; } - - return (cog[fragmentDescriptor1[0]].x - + cog[fragmentDescriptor1[0]].y - Date: Thu, 25 Jul 2024 12:38:04 +0200 Subject: [PATCH 2/2] reverted to Java8 compatibility --- .../actelion/research/gui/editor/GenericEditorArea.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/actelion/research/gui/editor/GenericEditorArea.java b/src/main/java/com/actelion/research/gui/editor/GenericEditorArea.java index fee12aa1..b45b24de 100644 --- a/src/main/java/com/actelion/research/gui/editor/GenericEditorArea.java +++ b/src/main/java/com/actelion/research/gui/editor/GenericEditorArea.java @@ -358,7 +358,7 @@ public void paintContent(GenericDrawContext context) { mDepictor.paintDrawingObjects(context); } - if (mCurrentHiliteAtom != -1 && !mAtomKeyStrokeBuffer.isEmpty()) { + if (mCurrentHiliteAtom != -1 && mAtomKeyStrokeBuffer.length() != 0) { int x = (int)mMol.getAtomX(mCurrentHiliteAtom); int y = (int)mMol.getAtomY(mCurrentHiliteAtom); String s = mAtomKeyStrokeBuffer.toString(); @@ -951,7 +951,7 @@ private void showWarningMessage(String msg) { private void eventHappened(GenericMouseEvent e) { if (e.getWhat() == GenericMouseEvent.MOUSE_PRESSED) { - if (mCurrentHiliteAtom != -1 && !mAtomKeyStrokeBuffer.isEmpty()) + if (mCurrentHiliteAtom != -1 && mAtomKeyStrokeBuffer.length() != 0) expandAtomKeyStrokes(mAtomKeyStrokeBuffer.toString()); mAtomKeyStrokeBuffer.setLength(0); @@ -1283,7 +1283,7 @@ else if (e.getKey() == 'v') { } } else if (mCurrentHiliteAtom != -1) { int ch = e.getKey(); - boolean isFirst = (mAtomKeyStrokeBuffer.isEmpty()); + boolean isFirst = (mAtomKeyStrokeBuffer.length() == 0); if (isFirst) mFirstAtomKey = ch; else { @@ -2570,7 +2570,7 @@ private boolean trackHiliting(double x, double y, boolean isDragging){ || hiliteObject != null); if (mCurrentHiliteAtom != theAtom) { - if (mCurrentHiliteAtom != -1 && !mAtomKeyStrokeBuffer.isEmpty()) + if (mCurrentHiliteAtom != -1 && mAtomKeyStrokeBuffer.length() != 0) expandAtomKeyStrokes(mAtomKeyStrokeBuffer.toString()); mCurrentHiliteAtom = theAtom;