Skip to content

Commit d001902

Browse files
committed
cleanup and refactor
1 parent b4674bd commit d001902

File tree

7 files changed

+128
-24
lines changed

7 files changed

+128
-24
lines changed

app/src/main/res/layout/list_item_theme.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@
2929

3030
</LinearLayout>
3131

32-
<com.duy.ide.editor.view.EditAreaView2
32+
<com.duy.ide.editor.view.HighlightEditorView
3333
android:id="@+id/editor_view"
3434
android:layout_width="match_parent"
3535
android:layout_height="wrap_content"
3636
android:typeface="monospace">
3737

38-
</com.duy.ide.editor.view.EditAreaView2>
38+
</com.duy.ide.editor.view.HighlightEditorView>
3939
</LinearLayout>
4040

libeditor/src/main/java/com/duy/ide/editor/core/widget/EditAreaView.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@
1919
package com.duy.ide.editor.core.widget;
2020

2121
import android.content.Context;
22-
import com.duy.ide.editor.core.content.UndoManager;
23-
import com.duy.ide.editor.core.text.Layout;
24-
import com.duy.ide.editor.core.text.Selection;
25-
import com.duy.ide.editor.core.text.method.ArrowKeyMovementMethod;
26-
import com.duy.ide.editor.core.text.method.MovementMethod;
27-
import com.duy.ide.editor.core.widget.model.EditorIndex;
2822
import android.graphics.Canvas;
2923
import android.graphics.Rect;
3024
import android.support.annotation.Nullable;
@@ -40,6 +34,12 @@
4034
import android.view.ViewConfiguration;
4135
import android.view.ViewParent;
4236

37+
import com.duy.ide.editor.core.content.UndoManager;
38+
import com.duy.ide.editor.core.text.Layout;
39+
import com.duy.ide.editor.core.text.Selection;
40+
import com.duy.ide.editor.core.text.method.ArrowKeyMovementMethod;
41+
import com.duy.ide.editor.core.text.method.MovementMethod;
42+
import com.duy.ide.editor.core.widget.model.EditorIndex;
4343
import com.duy.ide.editor.view.IEditAreaView;
4444
import com.jecelyin.common.utils.LimitedQueue;
4545
import com.jecelyin.editor.v2.Preferences;
@@ -198,13 +198,6 @@ public void selectAll() {
198198
selectAllText();
199199
}
200200

201-
/**
202-
* Convenience for {@link Selection#extendSelection}.
203-
*/
204-
public void extendSelection(int index) {
205-
Selection.extendSelection(getText(), index);
206-
}
207-
208201
@Override
209202
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
210203
super.onSizeChanged(w, h, oldw, oldh);
@@ -241,7 +234,6 @@ private void init() {
241234
setFocusableInTouchMode(true);
242235

243236
mScaleDetector = new ScaleGestureDetector(getContext(), new ScaleListener());
244-
245237
mFastScroller = new FastScroller(getContext(), this);
246238
final ViewConfiguration configuration = ViewConfiguration.get(getContext());
247239
mTouchSlop = configuration.getScaledTouchSlop();

libeditor/src/main/java/com/duy/ide/editor/core/widget/FastScroller.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import android.content.res.ColorStateList;
2121
import android.content.res.Resources;
2222
import android.content.res.TypedArray;
23-
import com.duy.ide.editor.core.text.Selection;
2423
import android.graphics.Canvas;
2524
import android.graphics.Paint;
2625
import android.graphics.drawable.Drawable;
@@ -30,6 +29,7 @@
3029
import android.view.MotionEvent;
3130
import android.widget.SectionIndexer;
3231

32+
import com.duy.ide.editor.core.text.Selection;
3333
import com.duy.ide.editor.editor.R;
3434
import com.jecelyin.common.utils.DLog;
3535

@@ -56,7 +56,7 @@ public class FastScroller {
5656
private int mThumbW;
5757
private int mThumbY;
5858

59-
private BaseEditorView mList;
59+
private EditAreaView mList;
6060
//private boolean mScrollCompleted;
6161
private int mVisibleItem;
6262
private Paint mPaint;
@@ -79,7 +79,7 @@ public class FastScroller {
7979

8080
// private String TAG = "FastScroller";
8181

82-
public FastScroller(Context context, BaseEditorView textView) {
82+
public FastScroller(Context context, EditAreaView textView) {
8383
mList = textView;
8484
init(context);
8585
}

libeditor/src/main/java/com/duy/ide/editor/view/EditAreaView2.java renamed to libeditor/src/main/java/com/duy/ide/editor/view/HighlightEditorView.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
import java.lang.reflect.Field;
4848
import java.util.List;
4949

50-
public class EditAreaView2 extends AppCompatEditText implements IEditAreaView, SharedPreferences.OnSharedPreferenceChangeListener {
50+
public class HighlightEditorView extends AppCompatEditText implements IEditAreaView, SharedPreferences.OnSharedPreferenceChangeListener {
5151
private static final String TAG = "EditAreaView2";
5252
private final LayoutContext mLayoutContext = new LayoutContext();
5353
protected Preferences mPreferences;
@@ -71,18 +71,18 @@ public class EditAreaView2 extends AppCompatEditText implements IEditAreaView, S
7171
*/
7272
private LineManager mLineManager;
7373

74-
public EditAreaView2(Context context) {
74+
public HighlightEditorView(Context context) {
7575
super(context);
7676
init(context);
7777
}
7878

79-
public EditAreaView2(Context context, AttributeSet attrs) {
79+
public HighlightEditorView(Context context, AttributeSet attrs) {
8080
super(context, attrs);
8181
init(context);
8282

8383
}
8484

85-
public EditAreaView2(Context context, AttributeSet attrs, int defStyleAttr) {
85+
public HighlightEditorView(Context context, AttributeSet attrs, int defStyleAttr) {
8686
super(context, attrs, defStyleAttr);
8787
init(context);
8888
}

libeditor/src/main/java/com/duy/ide/editor/view/IEditAreaView.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,5 @@ public interface IEditAreaView extends IEditableSupport, IdeEditor {
6767
Parcelable onSaveInstanceState();
6868

6969
Context getContext();
70+
7071
}
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
/*
2+
* Copyright (C) 2018 Duy Tran Le
3+
*
4+
* This program is free software: you can redistribute it and/or modify
5+
* it under the terms of the GNU General Public License as published by
6+
* the Free Software Foundation, either version 3 of the License, or
7+
* (at your option) any later version.
8+
*
9+
* This program is distributed in the hope that it will be useful,
10+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
* GNU General Public License for more details.
13+
*
14+
* You should have received a copy of the GNU General Public License
15+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16+
*/
17+
18+
package com.duy.ide.editor.view;
19+
20+
import android.content.Context;
21+
import android.support.annotation.Nullable;
22+
import android.util.AttributeSet;
23+
import android.util.DisplayMetrics;
24+
import android.util.TypedValue;
25+
import android.view.ScaleGestureDetector;
26+
27+
import com.duy.ide.editor.core.widget.FastScroller;
28+
import com.jecelyin.editor.v2.Preferences;
29+
30+
public class ZoomSupportEditText extends HighlightEditorView {
31+
/**
32+
* Helper object that renders and controls the fast scroll thumb.
33+
*/
34+
@Nullable
35+
private FastScroller mFastScroller;
36+
/**
37+
* When user zoom in/zoom out, disable long click event
38+
*/
39+
private boolean isTextScaling = false;
40+
private ScaleGestureDetector mScaleDetector;
41+
42+
public ZoomSupportEditText(Context context) {
43+
super(context);
44+
initView();
45+
}
46+
47+
public ZoomSupportEditText(Context context, AttributeSet attrs) {
48+
super(context, attrs);
49+
}
50+
51+
public ZoomSupportEditText(Context context, AttributeSet attrs, int defStyleAttr) {
52+
super(context, attrs, defStyleAttr);
53+
}
54+
55+
private void initView() {
56+
mScaleDetector = new ScaleGestureDetector(getContext(), new ScaleListener());
57+
// mFastScroller = new FastScroller(getContext(), this);
58+
59+
}
60+
61+
@Override
62+
public boolean performLongClick() {
63+
if (isTextScaling) {
64+
return true;
65+
}
66+
return super.performLongClick();
67+
}
68+
69+
70+
@Override
71+
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
72+
super.onSizeChanged(w, h, oldw, oldh);
73+
if (mFastScroller != null) {
74+
mFastScroller.onSizeChanged(w, h, oldw, oldh);
75+
}
76+
}
77+
78+
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
79+
private final float minSize;
80+
private final float maxSize;
81+
82+
public ScaleListener() {
83+
DisplayMetrics metrics = getResources().getDisplayMetrics();
84+
minSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, Preferences.DEF_MIN_FONT_SIZE, metrics);
85+
maxSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, Preferences.DEF_MAX_FONT_SIZE, metrics);
86+
}
87+
88+
@Override
89+
public boolean onScaleBegin(ScaleGestureDetector detector) {
90+
isTextScaling = true;
91+
return super.onScaleBegin(detector);
92+
}
93+
94+
@Override
95+
public boolean onScale(ScaleGestureDetector detector) {
96+
float size = getTextSize() * detector.getScaleFactor();
97+
size = Math.max(minSize, Math.min(size, maxSize * 2));
98+
setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
99+
100+
return true;
101+
}
102+
103+
@Override
104+
public void onScaleEnd(ScaleGestureDetector detector) {
105+
super.onScaleEnd(detector);
106+
isTextScaling = false;
107+
}
108+
}
109+
110+
111+
}

libeditor/src/main/res/layout/fragment_editor.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
android:layout_width="0dp"
1616
android:layout_height="match_parent" />
1717

18-
<com.duy.ide.editor.view.EditAreaView2
18+
<com.duy.ide.editor.view.HighlightEditorView
1919
android:id="@+id/edit_text"
2020
android:layout_width="match_parent"
2121
android:layout_height="match_parent"

0 commit comments

Comments
 (0)