Skip to content

Commit 77f2e3a

Browse files
committed
implement diagnostic presenter
1 parent 2339b83 commit 77f2e3a

File tree

12 files changed

+95
-74
lines changed

12 files changed

+95
-74
lines changed

app/src/main/java/com/duy/ccppcompiler/compiler/CompileManager.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@
2020
import android.content.Intent;
2121

2222
import com.duy.ccppcompiler.R;
23+
import com.duy.ccppcompiler.compiler.diagnostic.DiagnosticsCollector;
24+
import com.duy.ccppcompiler.compiler.diagnostic.OutputParser;
2325
import com.duy.ccppcompiler.console.ConsoleActivity;
26+
import com.duy.ccppcompiler.diagnostic.DiagnosticPresenter;
2427
import com.duy.common.DLog;
2528
import com.duy.ide.compiler.ICompileManager;
2629
import com.duy.ide.compiler.shell.ShellResult;
@@ -37,8 +40,9 @@ public class CompileManager implements ICompileManager {
3740
private static final String TAG = "CompileManager";
3841
private ProgressDialog mCompileDialog;
3942
private EditorActivity mActivity;
43+
private DiagnosticPresenter mDiagnosticPresenter;
4044

41-
CompileManager(EditorActivity activity) {
45+
public CompileManager(EditorActivity activity) {
4246
mCompileDialog = new ProgressDialog(activity);
4347
mActivity = activity;
4448
}
@@ -80,6 +84,15 @@ public void onCompileFailed(ShellResult shellResult) {
8084
mCompileDialog.setMessage(shellResult.getMessage());
8185
}
8286
if (DLog.DEBUG) DLog.w(TAG, "onCompileFailed: \n" + shellResult.getMessage());
87+
if (mDiagnosticPresenter != null) {
88+
DiagnosticsCollector diagnosticsCollector = new DiagnosticsCollector<>();
89+
OutputParser parser = new OutputParser(diagnosticsCollector);
90+
parser.parse(shellResult.getMessage());
91+
mDiagnosticPresenter.setDiagnostics(diagnosticsCollector.getDiagnostics());
92+
}
8393
}
8494

95+
public void setDiagnosticPresenter(DiagnosticPresenter diagnosticPresenter) {
96+
this.mDiagnosticPresenter = diagnosticPresenter;
97+
}
8598
}

app/src/main/java/com/duy/ccppcompiler/compiler/CompilerFactory.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@
1818

1919
import android.content.Context;
2020

21-
import com.duy.ide.compiler.ICompileManager;
2221
import com.duy.ide.compiler.INativeCompiler;
23-
import com.jecelyin.editor.v2.ui.activities.EditorActivity;
2422

2523
/**
2624
* Created by Duy on 25-Apr-18.
@@ -37,10 +35,6 @@ public static INativeCompiler createCompiler(Context context, CompileType compil
3735
return new GCCCompiler(context);
3836
}
3937

40-
public static ICompileManager createCompileManager(EditorActivity activity) {
41-
return new CompileManager(activity);
42-
}
43-
4438
/**
4539
* Created by Duy on 25-Apr-18.
4640
*/

app/src/main/java/com/duy/ccppcompiler/compiler/diagnostic/OutputParser.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* Created by Duy on 28-Apr-18.
2424
*/
2525

26-
public class OutputParser<S> {
26+
public class OutputParser {
2727
public static final Pattern PATTERN = Pattern.compile(
2828
"(.*):" + /*File name*/
2929
"([0-9]+):" + /*Line*/
@@ -32,12 +32,13 @@ public class OutputParser<S> {
3232
"(.*)" /*Message*/
3333
, Pattern.CASE_INSENSITIVE);
3434

35-
private DiagnosticsCollector<? extends S> diagnosticsCollector;
35+
private DiagnosticsCollector diagnosticsCollector;
3636

37-
public OutputParser(DiagnosticsCollector<? extends S> diagnosticsCollector) {
37+
public OutputParser(DiagnosticsCollector diagnosticsCollector) {
3838
this.diagnosticsCollector = diagnosticsCollector;
3939
}
4040

41+
@SuppressWarnings("unchecked")
4142
public void parse(String inputData) {
4243
Matcher matcher = PATTERN.matcher(inputData);
4344
while (matcher.find()) {

app/src/main/java/com/jecelyin/editor/v2/ui/diagnostic/DiagnosticAdapter.java renamed to app/src/main/java/com/duy/ccppcompiler/diagnostic/DiagnosticAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.jecelyin.editor.v2.ui.diagnostic;
1+
package com.duy.ccppcompiler.diagnostic;
22

33
import android.content.Context;
44
import android.support.annotation.NonNull;
@@ -23,7 +23,7 @@ public class DiagnosticAdapter extends RecyclerView.Adapter<DiagnosticAdapter.Vi
2323
private Context mContext;
2424
private DiagnosticClickListener mDiagnosticClickListener;
2525

26-
public DiagnosticAdapter(List<Diagnostic> diagnostics, Context context) {
26+
DiagnosticAdapter(List<Diagnostic> diagnostics, Context context) {
2727
this.mDiagnostics = diagnostics;
2828
this.mContext = context;
2929
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.jecelyin.editor.v2.ui.diagnostic;
17+
package com.duy.ccppcompiler.diagnostic;
1818

1919
import android.view.View;
2020

app/src/main/java/com/jecelyin/editor/v2/ui/diagnostic/DiagnosticContract.java renamed to app/src/main/java/com/duy/ccppcompiler/diagnostic/DiagnosticContract.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.jecelyin.editor.v2.ui.diagnostic;
17+
package com.duy.ccppcompiler.diagnostic;
1818

1919
import com.duy.ccppcompiler.compiler.diagnostic.Diagnostic;
2020

@@ -25,7 +25,7 @@
2525
*/
2626

2727
public class DiagnosticContract {
28-
public interface View {
28+
public static interface View {
2929
void show(List<Diagnostic> diagnostics);
3030

3131
void remove(Diagnostic diagnostic);
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright 2018 Mr Duy
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.duy.ccppcompiler.diagnostic;
18+
19+
import android.support.annotation.MainThread;
20+
import android.support.v7.widget.RecyclerView;
21+
import android.view.View;
22+
23+
import com.duy.ccppcompiler.compiler.diagnostic.Diagnostic;
24+
import com.jecelyin.editor.v2.ui.activities.EditorActivity;
25+
import com.jecelyin.editor.v2.ui.manager.TabManager;
26+
27+
import java.util.ArrayList;
28+
29+
/**
30+
* Created by Duy on 28-Apr-18.
31+
*/
32+
33+
public class DiagnosticPresenter implements DiagnosticContract.Presenter {
34+
private final RecyclerView mRecyclerView;
35+
private final EditorActivity mActivity;
36+
private final TabManager mTabManager;
37+
private ArrayList<Diagnostic> diagnostics;
38+
private DiagnosticContract.View mView;
39+
40+
public DiagnosticPresenter(RecyclerView recyclerView, EditorActivity activity, TabManager tabManager) {
41+
this.mRecyclerView = recyclerView;
42+
this.mActivity = activity;
43+
this.mTabManager = tabManager;
44+
}
45+
46+
@MainThread
47+
@Override
48+
public void onDiagnosticClick(View view, Diagnostic diagnostic) {
49+
// TODO: 28-Apr-18 implement
50+
}
51+
52+
@MainThread
53+
public void setDiagnostics(ArrayList<Diagnostic> diagnostics) {
54+
this.diagnostics = diagnostics;
55+
if (mView != null) {
56+
mView.show(diagnostics);
57+
}
58+
}
59+
}

app/src/main/java/com/jecelyin/editor/v2/ui/diagnostic/DiagnosticView.java renamed to app/src/main/java/com/duy/ccppcompiler/diagnostic/DiagnosticView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package com.jecelyin.editor.v2.ui.diagnostic;
17+
package com.duy.ccppcompiler.diagnostic;
1818

1919
import android.content.Context;
2020
import android.support.v7.widget.LinearLayoutManager;

app/src/main/java/com/jecelyin/editor/v2/ui/activities/EditorActivity.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@
4444

4545
import com.afollestad.materialdialogs.folderselector.FolderChooserDialog;
4646
import com.duy.ccppcompiler.R;
47+
import com.duy.ccppcompiler.compiler.CompileManager;
4748
import com.duy.ccppcompiler.compiler.CompilerFactory;
49+
import com.duy.ccppcompiler.diagnostic.DiagnosticPresenter;
4850
import com.duy.ide.compiler.CompileTask;
49-
import com.duy.ide.compiler.ICompileManager;
5051
import com.duy.ide.compiler.INativeCompiler;
5152
import com.duy.ide.filemanager.FileManager;
5253
import com.duy.ide.filemanager.SaveListener;
@@ -110,9 +111,9 @@ public class EditorActivity extends FullScreenActivity
110111
private Preferences preferences;
111112
private ClusterCommand clusterCommand;
112113
private MenuManager mMenuManager;
113-
private FolderChooserDialog.FolderCallback findFolderCallback;
114114
private long mExitTime;
115115
private SlidingUpPanelLayout mSlidingUpPanelLayout;
116+
private DiagnosticPresenter diagnosticPresenter;
116117

117118
@Override
118119
protected void onRestoreInstanceState(Bundle savedInstanceState) {
@@ -481,7 +482,8 @@ public void onSaved() {
481482

482483
CompilerFactory.CompileType compileType = CompilerFactory.CompileType.GCC;
483484
INativeCompiler compiler = CompilerFactory.createCompiler(EditorActivity.this, compileType);
484-
ICompileManager compileManager = CompilerFactory.createCompileManager(EditorActivity.this);
485+
CompileManager compileManager = new CompileManager(EditorActivity.this);
486+
compileManager.setDiagnosticPresenter(diagnosticPresenter);
485487

486488
CompileTask compileTask = new CompileTask(compiler, srcFiles, compileManager);
487489
compileTask.execute();
@@ -506,9 +508,7 @@ public void closeMenu() {
506508

507509
@Override
508510
public void onFolderSelection(@NonNull FolderChooserDialog dialog, @NonNull File file) {
509-
if (findFolderCallback != null) {
510-
findFolderCallback.onFolderSelection(dialog, file);
511-
}
511+
512512
}
513513

514514
private void hideSoftInput() {
@@ -633,12 +633,12 @@ public TabManager getTabManager() {
633633
public boolean onKeyDown(int keyCode, KeyEvent event) {
634634
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
635635
if (mDrawerLayout != null) {
636-
if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
637-
mDrawerLayout.closeDrawer(Gravity.LEFT);
636+
if (mDrawerLayout.isDrawerOpen(Gravity.START)) {
637+
mDrawerLayout.closeDrawer(Gravity.START);
638638
return true;
639639
}
640-
if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
641-
mDrawerLayout.closeDrawer(Gravity.RIGHT);
640+
if (mDrawerLayout.isDrawerOpen(Gravity.END)) {
641+
mDrawerLayout.closeDrawer(Gravity.END);
642642
return true;
643643
}
644644
}

app/src/main/java/com/jecelyin/editor/v2/ui/diagnostic/FileDiagnosticPresenter.java

Lines changed: 0 additions & 44 deletions
This file was deleted.

0 commit comments

Comments
 (0)