Skip to content

Commit d539fe7

Browse files
committed
Change pager adapter
1 parent 2d7f91b commit d539fe7

File tree

11 files changed

+79
-989
lines changed

11 files changed

+79
-989
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/***
2+
Copyright (c) 2013 CommonsWare, LLC
3+
4+
Licensed under the Apache License, Version 2.0 (the "License"); you may
5+
not use this file except in compliance with the License. You may obtain
6+
a copy of the License at
7+
http://www.apache.org/licenses/LICENSE-2.0
8+
Unless required by applicable law or agreed to in writing, software
9+
distributed under the License is distributed on an "AS IS" BASIS,
10+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
See the License for the specific language governing permissions and
12+
limitations under the License.
13+
*/
14+
15+
package com.commonsware.cwac.pager;
16+
17+
import android.os.Parcelable;
18+
19+
public interface PageDescriptor extends Parcelable {
20+
String getFragmentTag();
21+
22+
String getTitle();
23+
}

lib-n-ide/src/main/java/com/duy/ide/editor/pager/SimplePageDescriptor.java renamed to lib-n-ide/src/main/java/com/commonsware/cwac/pager/SimplePageDescriptor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* along with this program. If not, see <https://www.gnu.org/licenses/>.
1616
*/
1717

18-
package com.duy.ide.editor.pager;
18+
package com.commonsware.cwac.pager;
1919

2020
import android.os.Parcel;
2121

@@ -38,7 +38,7 @@ public SimplePageDescriptor(String tag, String title) {
3838
this.title = title;
3939
}
4040

41-
protected SimplePageDescriptor(Parcel in) {
41+
public SimplePageDescriptor(Parcel in) {
4242
tag = in.readString();
4343
title = in.readString();
4444
}

lib-n-ide/src/main/java/com/duy/ide/editor/pager/ArrayPagerAdapter.java renamed to lib-n-ide/src/main/java/com/commonsware/cwac/pager/v4/ArrayPagerAdapter.java

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,46 +15,45 @@
1515
* along with this program. If not, see <https://www.gnu.org/licenses/>.
1616
*/
1717

18-
package com.duy.ide.editor.pager;
18+
package com.commonsware.cwac.pager.v4;
1919

2020
import android.os.Bundle;
2121
import android.os.Parcel;
2222
import android.os.Parcelable;
23-
import android.support.annotation.Nullable;
2423
import android.support.v4.app.Fragment;
2524
import android.support.v4.app.FragmentManager;
2625
import android.support.v4.app.FragmentTransaction;
2726
import android.support.v4.view.PagerAdapter;
2827
import android.view.View;
2928
import android.view.ViewGroup;
3029

30+
import com.commonsware.cwac.pager.PageDescriptor;
31+
3132
import java.util.ArrayList;
3233
import java.util.HashMap;
3334
import java.util.List;
3435

35-
abstract public class ArrayPagerAdapter<T extends Fragment> extends
36-
PagerAdapter {
36+
abstract public class ArrayPagerAdapter<T extends Fragment> extends PagerAdapter {
37+
3738
public static final RetentionStrategy KEEP = new RetentionStrategy() {
38-
public void attach(Fragment fragment,
39-
FragmentTransaction currTransaction) {
39+
public void attach(Fragment fragment, FragmentTransaction currTransaction) {
4040
currTransaction.attach(fragment);
4141
}
4242

43-
public void detach(Fragment fragment,
44-
FragmentTransaction currTransaction) {
43+
public void detach(Fragment fragment, FragmentTransaction currTransaction) {
4544
currTransaction.detach(fragment);
4645
}
4746
};
47+
4848
private static final String KEY_DESCRIPTORS = "descriptors";
4949
private final FragmentManager fm;
50-
private ArrayList<PageEntry> entries = new ArrayList<PageEntry>();
50+
private ArrayList<PageEntry> entries = new ArrayList<>();
5151
private FragmentTransaction currTransaction = null;
5252
private T currPrimaryItem = null;
5353
private HashMap<Fragment, Integer> positionDelta = new HashMap<Fragment, Integer>();
5454
private RetentionStrategy retentionStrategy = null;
5555

56-
public ArrayPagerAdapter(FragmentManager fragmentManager,
57-
List<PageDescriptor> descriptors) {
56+
public ArrayPagerAdapter(FragmentManager fragmentManager, List<PageDescriptor> descriptors) {
5857
this(fragmentManager, descriptors, null);
5958
}
6059

@@ -86,10 +85,6 @@ public int getCount() {
8685

8786
@Override
8887
public void startUpdate(ViewGroup container) {
89-
if (container.getId() == View.NO_ID) {
90-
throw new IllegalStateException("ViewPager with adapter " + this
91-
+ " requires a view id");
92-
}
9388
}
9489

9590
@Override
@@ -136,7 +131,8 @@ public void destroyItem(ViewGroup container, int position,
136131

137132
@SuppressWarnings("unchecked")
138133
@Override
139-
public void setPrimaryItem(ViewGroup container, int position, Object object) {
134+
public void setPrimaryItem(ViewGroup container, int position,
135+
Object object) {
140136
T fragment = (T) object;
141137

142138
if (fragment != currPrimaryItem) {
@@ -229,6 +225,15 @@ public void add(PageDescriptor desc) {
229225
notifyDataSetChanged();
230226
}
231227

228+
public void addAll(List<? extends PageDescriptor> descriptors) {
229+
for (PageDescriptor descriptor : descriptors) {
230+
validatePageDescriptor(descriptor);
231+
entries.add(new PageEntry(descriptor));
232+
}
233+
positionDelta.clear();
234+
notifyDataSetChanged();
235+
}
236+
232237
public void insert(PageDescriptor desc, int position) {
233238
validatePageDescriptor(desc);
234239

@@ -277,13 +282,10 @@ public void move(int oldPosition, int newPosition) {
277282
}
278283

279284
@SuppressWarnings("unchecked")
280-
@Nullable
281285
public T getExistingFragment(int position) {
282286
return (T) (fm.findFragmentByTag(getFragmentTag(position)));
283287
}
284288

285-
286-
@Nullable
287289
public T getCurrentFragment() {
288290
return (currPrimaryItem);
289291
}

lib-n-ide/src/main/java/com/duy/ide/editor/pager/EditorFragmentPagerAdapter.java

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@
1919

2020
import android.support.annotation.NonNull;
2121
import android.support.annotation.Nullable;
22-
import android.support.v4.app.Fragment;
2322
import android.support.v7.app.AppCompatActivity;
2423

25-
import com.jecelyin.editor.v2.adapter.TabAdapter;
26-
import com.jecelyin.editor.v2.common.TabCloseListener;
24+
import com.commonsware.cwac.pager.PageDescriptor;
25+
import com.commonsware.cwac.pager.v4.ArrayPagerAdapter;
2726
import com.duy.ide.editor.EditorDelegate;
2827
import com.duy.ide.editor.EditorFragment;
2928
import com.duy.ide.editor.IEditorDelegate;
30-
import com.nakama.arraypageradapter.ArrayFragmentStatePagerAdapter;
29+
import com.jecelyin.editor.v2.adapter.TabAdapter;
30+
import com.jecelyin.editor.v2.common.TabCloseListener;
3131

3232
import java.io.File;
3333
import java.util.ArrayList;
@@ -36,21 +36,21 @@
3636
* Created by Duy on 25-Apr-18.
3737
*/
3838

39-
public class EditorFragmentPagerAdapter extends ArrayFragmentStatePagerAdapter<EditorPageDescriptor> implements IEditorPagerAdapter {
39+
public class EditorFragmentPagerAdapter extends ArrayPagerAdapter<EditorFragment> implements IEditorPagerAdapter {
4040
private static final String TAG = "EditorFragmentPagerAdap";
4141

4242
public EditorFragmentPagerAdapter(AppCompatActivity activity) {
43-
super(activity.getSupportFragmentManager());
43+
super(activity.getSupportFragmentManager(), new ArrayList<PageDescriptor>());
4444
}
4545

4646
@Override
47-
public Fragment getFragment(EditorPageDescriptor item, int position) {
48-
return EditorFragment.newInstance(item);
47+
public EditorFragment getCurrentFragment() {
48+
return super.getCurrentFragment();
4949
}
5050

5151
@Override
52-
public void add(EditorPageDescriptor item) {
53-
super.add(item);
52+
public EditorFragment getExistingFragment(int position) {
53+
return super.getExistingFragment(position);
5454
}
5555

5656
@Override
@@ -68,7 +68,7 @@ public void newEditor(@NonNull File file, int offset, String encoding) {
6868
@Nullable
6969
@Override
7070
public EditorDelegate getCurrentEditorDelegate() {
71-
if (getCount() == 0){
71+
if (getCount() == 0) {
7272
return null;
7373
}
7474
EditorFragment fragment = (EditorFragment) getCurrentFragment();
@@ -88,7 +88,7 @@ public TabAdapter.TabInfo[] getTabInfoList() {
8888
boolean changed = editorDelegate.isChanged();
8989
arr[i] = new TabAdapter.TabInfo(editorDelegate.getTitle(), editorDelegate.getPath(), changed);
9090
} else {
91-
EditorPageDescriptor pageDescriptor = getItem(i);
91+
EditorPageDescriptor pageDescriptor = (EditorPageDescriptor) getPageDescriptor(i);
9292
arr[i] = new TabAdapter.TabInfo(pageDescriptor.getTitle(), pageDescriptor.getPath(), false);
9393
}
9494
}
@@ -125,15 +125,19 @@ public ArrayList<IEditorDelegate> getAllEditor() {
125125
return delegates;
126126
}
127127

128-
@Nullable
129128
@Override
130-
public CharSequence getPageTitle(int position) {
131-
return getItem(position).getTitle();
129+
protected EditorFragment createFragment(PageDescriptor desc) {
130+
return EditorFragment.newInstance((EditorPageDescriptor) desc);
131+
}
132+
133+
@Override
134+
public EditorPageDescriptor getPageDescriptor(int position) {
135+
return (EditorPageDescriptor) super.getPageDescriptor(position);
132136
}
133137

134138
@Nullable
135139
public EditorDelegate getEditorDelegateAt(int index) {
136-
EditorFragment fragment = (EditorFragment) super.getExistingFragment(index);
140+
EditorFragment fragment = super.getExistingFragment(index);
137141
if (fragment != null) {
138142
return fragment.getEditorDelegate();
139143
}

lib-n-ide/src/main/java/com/duy/ide/editor/pager/EditorPageDescriptor.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import android.os.Parcel;
2121
import android.support.annotation.NonNull;
2222

23+
import com.commonsware.cwac.pager.SimplePageDescriptor;
24+
2325
import java.io.File;
2426

2527
/**
@@ -38,6 +40,7 @@ public EditorPageDescriptor[] newArray(int size) {
3840
return new EditorPageDescriptor[size];
3941
}
4042
};
43+
4144
@NonNull
4245
private final File file;
4346
private final int cursorOffset;
@@ -60,7 +63,7 @@ private EditorPageDescriptor(Parcel in) {
6063

6164
@Override
6265
public int describeContents() {
63-
return 0;
66+
return super.describeContents();
6467
}
6568

6669
@Override

lib-n-ide/src/main/java/com/duy/ide/editor/pager/PageDescriptor.java

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

lib-n-ide/src/main/java/com/jecelyin/editor/v2/manager/TabManager.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@
3434
import com.duy.ide.database.ITabDatabase;
3535
import com.duy.ide.database.RecentFileItem;
3636
import com.duy.ide.database.SQLHelper;
37+
import com.duy.ide.editor.EditorDelegate;
38+
import com.duy.ide.editor.IEditorDelegate;
3739
import com.duy.ide.editor.editor.R;
3840
import com.duy.ide.editor.pager.EditorFragmentPagerAdapter;
3941
import com.duy.ide.editor.pager.EditorPageDescriptor;
42+
import com.duy.ide.editor.task.SaveAllTask;
4043
import com.duy.ide.file.SaveListener;
4144
import com.jecelyin.editor.v2.Preferences;
4245
import com.jecelyin.editor.v2.common.TabCloseListener;
4346
import com.jecelyin.editor.v2.dialog.SaveConfirmDialog;
44-
import com.duy.ide.editor.EditorDelegate;
45-
import com.duy.ide.editor.IEditorDelegate;
46-
import com.duy.ide.editor.task.SaveAllTask;
4747
import com.ogaclejapan.smarttablayout.SmartTabLayout;
4848

4949
import java.io.File;
@@ -109,6 +109,7 @@ public void onChanged() {
109109
}
110110
});
111111
}
112+
112113
@Override
113114
public boolean newTab(File file) {
114115
return newTab(file, 0, "UTF-8");
@@ -124,7 +125,7 @@ public boolean newTab(File file, int offset, String encoding) {
124125

125126
int count = mPagerAdapter.getCount();
126127
for (int i = 0; i < count; i++) {
127-
EditorPageDescriptor descriptor = mPagerAdapter.getItem(i);
128+
EditorPageDescriptor descriptor = mPagerAdapter.getPageDescriptor(i);
128129
if (descriptor.getPath() == null)
129130
continue;
130131
if (descriptor.getPath().equals(file.getPath())) {
@@ -136,14 +137,17 @@ public boolean newTab(File file, int offset, String encoding) {
136137
setCurrentTab(count);
137138
return true;
138139
}
140+
139141
@Override
140142
public int getTabCount() {
141143
return mPagerAdapter.getCount();
142144
}
145+
143146
@Override
144147
public int getCurrentTab() {
145148
return mViewPager.getCurrentItem();
146149
}
150+
147151
@Override
148152
public void setCurrentTab(int index) {
149153
int tabCount = mViewPager.getAdapter().getCount();
@@ -332,7 +336,7 @@ public View createTabView(ViewGroup container, final int position, PagerAdapter
332336
LayoutInflater layoutInflater = LayoutInflater.from(mActivity);
333337
View view = layoutInflater.inflate(R.layout.list_item_tab, container, false);
334338
TextView txtName = view.findViewById(R.id.txt_name);
335-
final EditorPageDescriptor item = editorAdapter.getItem(position);
339+
final EditorPageDescriptor item = editorAdapter.getPageDescriptor(position);
336340
final File file = new File(item.getPath());
337341

338342
txtName.setText(file.getName());

0 commit comments

Comments
 (0)