Skip to content

Commit a63676b

Browse files
committed
implement diagnostic view in fragment
1 parent bbfff11 commit a63676b

File tree

5 files changed

+72
-13
lines changed

5 files changed

+72
-13
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@
1717
package com.duy.ccppcompiler.compiler.diagnostic;
1818

1919
import android.content.Context;
20+
import android.os.Parcelable;
2021

2122
/**
2223
* Created by Duy on 28-Apr-18.
2324
*/
2425

25-
public interface Diagnostic<S> {
26+
public interface Diagnostic<S> extends Parcelable {
2627
/**
2728
* Used to signal that no position is available.
2829
*/

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

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,27 @@
1717
package com.duy.ccppcompiler.compiler.diagnostic;
1818

1919
import android.content.Context;
20+
import android.os.Parcel;
21+
import android.os.Parcelable;
2022

2123
import java.io.File;
2224

2325
/**
2426
* Created by Duy on 28-Apr-18.
2527
*/
2628

27-
public class SimpleDiagnostic implements Diagnostic<File> {
29+
public class SimpleDiagnostic implements Diagnostic<File>, Parcelable {
30+
public static final Creator<SimpleDiagnostic> CREATOR = new Creator<SimpleDiagnostic>() {
31+
@Override
32+
public SimpleDiagnostic createFromParcel(Parcel in) {
33+
return new SimpleDiagnostic(in);
34+
}
35+
36+
@Override
37+
public SimpleDiagnostic[] newArray(int size) {
38+
return new SimpleDiagnostic[size];
39+
}
40+
};
2841
private final Kind kind;
2942
private final String filePath;
3043
private final int line;
@@ -39,6 +52,28 @@ public SimpleDiagnostic(Kind kind, String filePath, int line, int col, String me
3952
this.message = message;
4053
}
4154

55+
protected SimpleDiagnostic(Parcel in) {
56+
kind = Kind.values()[in.readInt()];
57+
filePath = in.readString();
58+
line = in.readInt();
59+
col = in.readInt();
60+
message = in.readString();
61+
}
62+
63+
@Override
64+
public void writeToParcel(Parcel dest, int flags) {
65+
dest.writeInt(kind.ordinal());
66+
dest.writeString(filePath);
67+
dest.writeInt(line);
68+
dest.writeInt(col);
69+
dest.writeString(message);
70+
}
71+
72+
@Override
73+
public int describeContents() {
74+
return 0;
75+
}
76+
4277
@Override
4378
public Kind getKind() {
4479
return kind;
@@ -119,4 +154,5 @@ public int hashCode() {
119154
result = 31 * result + (message != null ? message.hashCode() : 0);
120155
return result;
121156
}
157+
122158
}

app/src/main/java/com/duy/ccppcompiler/diagnostic/DiagnosticAdapter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ public void setDiagnosticClickListener(DiagnosticClickListener diagnosticClickLi
9898
this.mDiagnosticClickListener = diagnosticClickListener;
9999
}
100100

101+
public List<Diagnostic> getDiagnostics() {
102+
return mDiagnostics;
103+
}
101104

102105
static class ViewHolder extends RecyclerView.ViewHolder {
103106
TextView txtLine, txtCol, txtMessage, txtFile;

app/src/main/java/com/duy/ccppcompiler/diagnostic/DiagnosticView.java renamed to app/src/main/java/com/duy/ccppcompiler/diagnostic/DiagnosticFragment.java

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,17 @@
1616

1717
package com.duy.ccppcompiler.diagnostic;
1818

19-
import android.content.Context;
19+
import android.os.Bundle;
20+
import android.support.annotation.NonNull;
21+
import android.support.annotation.Nullable;
22+
import android.support.v4.app.Fragment;
2023
import android.support.v7.widget.LinearLayoutManager;
2124
import android.support.v7.widget.RecyclerView;
25+
import android.view.LayoutInflater;
2226
import android.view.View;
27+
import android.view.ViewGroup;
2328

29+
import com.duy.ccppcompiler.R;
2430
import com.duy.ccppcompiler.compiler.diagnostic.Diagnostic;
2531

2632
import java.util.ArrayList;
@@ -30,23 +36,37 @@
3036
* Created by Duy on 28-Apr-18.
3137
*/
3238

33-
public class DiagnosticView implements DiagnosticContract.View, DiagnosticClickListener {
39+
public class DiagnosticFragment extends Fragment implements DiagnosticContract.View, DiagnosticClickListener {
3440
private RecyclerView mRecyclerView;
35-
private Context mContext;
3641
private DiagnosticContract.Presenter mPresenter;
3742
private DiagnosticAdapter mAdapter;
3843

39-
public DiagnosticView(RecyclerView recyclerView, Context context) {
40-
this.mRecyclerView = recyclerView;
41-
this.mContext = context;
42-
init();
43-
}
4444

4545
private void init() {
46-
mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext));
47-
mAdapter = new DiagnosticAdapter(new ArrayList<Diagnostic>(), mContext);
46+
47+
}
48+
49+
@Nullable
50+
@Override
51+
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
52+
return super.onCreateView(inflater, container, savedInstanceState);
53+
54+
}
55+
56+
@Override
57+
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
58+
super.onViewCreated(view, savedInstanceState);
59+
mRecyclerView = view.findViewById(R.id.diagnostic_list_view);
60+
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
61+
mAdapter = new DiagnosticAdapter(new ArrayList<Diagnostic>(), getContext());
4862
mAdapter.setDiagnosticClickListener(this);
4963
mRecyclerView.setAdapter(mAdapter);
64+
init();
65+
}
66+
67+
@Override
68+
public void onSaveInstanceState(@NonNull Bundle outState) {
69+
super.onSaveInstanceState(outState);
5070
}
5171

5272
@Override

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import com.duy.ccppcompiler.compiler.CompileManager;
4747
import com.duy.ccppcompiler.compiler.CompilerFactory;
4848
import com.duy.ccppcompiler.diagnostic.DiagnosticPresenter;
49-
import com.duy.ccppcompiler.diagnostic.DiagnosticView;
5049
import com.duy.ide.compiler.CompileTask;
5150
import com.duy.ide.compiler.INativeCompiler;
5251
import com.duy.ide.filemanager.FileManager;

0 commit comments

Comments
 (0)