25 |
--------------------------------------------------------------------------------
/FreeFlowTests/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | FreeFlowTests
4 |
5 |
6 | FreeFlowTestStub
7 |
8 |
9 |
10 | com.android.ide.eclipse.adt.ResourceManagerBuilder
11 |
12 |
13 |
14 |
15 | com.android.ide.eclipse.adt.PreCompilerBuilder
16 |
17 |
18 |
19 |
20 | org.eclipse.jdt.core.javabuilder
21 |
22 |
23 |
24 |
25 | com.android.ide.eclipse.adt.ApkBuilder
26 |
27 |
28 |
29 |
30 |
31 | com.android.ide.eclipse.adt.AndroidNature
32 | org.eclipse.jdt.core.javanature
33 |
34 |
35 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/debug/BaseFreeFlowEventListener.java:
--------------------------------------------------------------------------------
1 | package com.comcast.freeflow.debug;
2 |
3 | import com.comcast.freeflow.core.FreeFlowEventListener;
4 | import com.comcast.freeflow.layouts.FreeFlowLayout;
5 |
6 | /**
7 | * Just a helper class so you can extend this for event management if you only
8 | * care for one or two specific events.
9 | *
10 | * @author Arpit Mathur
11 | *
12 | */
13 | public class BaseFreeFlowEventListener implements FreeFlowEventListener {
14 |
15 | @Override
16 | public void layoutChangeAnimationsStarting() {
17 | }
18 |
19 | @Override
20 | public void layoutChangeAnimationsComplete() {
21 | }
22 |
23 | @Override
24 | public void layoutComputed() {
25 | }
26 |
27 | @Override
28 | public void dataChanged() {
29 | }
30 |
31 | @Override
32 | public void onLayoutChanging(FreeFlowLayout oldLayout,
33 | FreeFlowLayout newLayout) {
34 | }
35 |
36 | @Override
37 | public void layoutComplete(boolean areTransitionAnimationsPlaying) {
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/examples/Artbook/res/values-sw720dp-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
22 | 128dp
23 |
24 |
25 |
--------------------------------------------------------------------------------
/examples/PhotoGrid/res/values-sw720dp-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
22 | 128dp
23 |
24 |
25 |
--------------------------------------------------------------------------------
/FreeFlowTestsStub/src/com/comcast/freeflow/teststub/MainActivity.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.teststub;
17 |
18 | import android.app.Activity;
19 |
20 | public class MainActivity extends Activity {
21 |
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/FreeFlow/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
21 |
22 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/FreeFlowTestsStub/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
22 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/examples/Artbook/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
22 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/examples/PhotoGrid/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
22 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/utils/MathUtils.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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.comcast.freeflow.utils;
18 |
19 | public class MathUtils {
20 |
21 | public static int randRange(int min, int max) {
22 | return min + (int) (Math.random() * ((max - min) + 1));
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/FreeFlowTestsStub/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
23 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/examples/Artbook/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
23 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/examples/PhotoGrid/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
23 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/examples/Artbook/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 | Artbook
20 | Artbook is a demo app that shows how to use the FreeFlow UI library. Click on the link below to go to the Github page for the library
21 | Github link
22 | About
23 | Change Layout
24 |
25 |
26 |
--------------------------------------------------------------------------------
/examples/Artbook/res/menu/artbook.xml:
--------------------------------------------------------------------------------
1 |
16 |
30 |
--------------------------------------------------------------------------------
/examples/Artbook/res/layout/pic_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
22 |
23 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/FreeFlowTests/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
21 |
22 |
23 |
24 |
27 |
28 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/examples/Artbook/res/layout/activity_artbook.xml:
--------------------------------------------------------------------------------
1 |
16 |
21 |
22 |
26 |
27 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/FreeFlowTestsStub/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
22 |
29 |
30 |
31 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/examples/Artbook/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
22 |
29 |
30 |
31 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/examples/PhotoGrid/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
22 |
29 |
30 |
31 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/FreeFlow/project.properties:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # This file is automatically generated by Android Tools.
17 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
18 | #
19 | # This file must be checked in Version Control Systems.
20 | #
21 | # To customize properties used by the Ant build system edit
22 | # "ant.properties", and override values to adapt the script to your
23 | # project structure.
24 | #
25 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
26 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
27 |
28 | # Project target.
29 | target=android-16
30 | android.library=true
31 |
--------------------------------------------------------------------------------
/FreeFlowTests/project.properties:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # This file is automatically generated by Android Tools.
17 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
18 | #
19 | # This file must be checked in Version Control Systems.
20 | #
21 | # To customize properties used by the Ant build system edit
22 | # "ant.properties", and override values to adapt the script to your
23 | # project structure.
24 | #
25 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
26 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
27 |
28 | # Project target.
29 | target=android-16
30 | android.library.reference.1=../FreeFlow
31 |
--------------------------------------------------------------------------------
/FreeFlowTestsStub/project.properties:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # This file is automatically generated by Android Tools.
17 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
18 | #
19 | # This file must be checked in Version Control Systems.
20 | #
21 | # To customize properties used by the Ant build system edit
22 | # "ant.properties", and override values to adapt the script to your
23 | # project structure.
24 | #
25 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
26 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
27 |
28 | # Project target.
29 | target=android-16
30 | android.library.reference.1=../FreeFlow
31 |
--------------------------------------------------------------------------------
/examples/Artbook/project.properties:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # This file is automatically generated by Android Tools.
17 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
18 | #
19 | # This file must be checked in Version Control Systems.
20 | #
21 | # To customize properties used by the Ant build system edit
22 | # "ant.properties", and override values to adapt the script to your
23 | # project structure.
24 | #
25 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
26 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
27 |
28 | # Project target.
29 | target=android-19
30 | android.library.reference.1=../../FreeFlow
31 |
--------------------------------------------------------------------------------
/examples/PhotoGrid/project.properties:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # This file is automatically generated by Android Tools.
17 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
18 | #
19 | # This file must be checked in Version Control Systems.
20 | #
21 | # To customize properties used by the Ant build system edit
22 | # "ant.properties", and override values to adapt the script to your
23 | # project structure.
24 | #
25 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
26 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
27 |
28 | # Project target.
29 | target=android-19
30 | android.library.reference.1=../../FreeFlow
31 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/animations/NoAnimationLayoutAnimator.java:
--------------------------------------------------------------------------------
1 | package com.comcast.freeflow.animations;
2 |
3 | import android.graphics.Rect;
4 | import android.util.Pair;
5 | import android.view.MotionEvent;
6 | import android.view.View;
7 | import android.view.View.MeasureSpec;
8 |
9 | import com.comcast.freeflow.core.FreeFlowContainer;
10 | import com.comcast.freeflow.core.FreeFlowItem;
11 | import com.comcast.freeflow.core.LayoutChangeset;
12 |
13 | public class NoAnimationLayoutAnimator implements FreeFlowLayoutAnimator {
14 |
15 | private LayoutChangeset changes;
16 |
17 | @Override
18 | public LayoutChangeset getChangeSet() {
19 | return changes;
20 | }
21 |
22 | @Override
23 | public void cancel() {
24 |
25 | }
26 |
27 | @Override
28 | public void animateChanges(LayoutChangeset changes,
29 | FreeFlowContainer callback) {
30 | this.changes = changes;
31 | for(Pair item : changes.getMoved()){
32 | Rect r = item.first.frame;
33 | View v = item.first.view;
34 | int wms = MeasureSpec.makeMeasureSpec(r.right-r.left, MeasureSpec.EXACTLY);
35 | int hms = MeasureSpec.makeMeasureSpec(r.bottom-r.top, MeasureSpec.EXACTLY);
36 | v.measure(wms,hms );
37 | v.layout(r.left, r.top, r.right, r.bottom);
38 | }
39 | callback.onLayoutChangeAnimationsCompleted(this);
40 |
41 | }
42 |
43 | @Override
44 | public boolean isRunning() {
45 | return false;
46 | }
47 |
48 | @Override
49 | public void onContainerTouchDown(MotionEvent event) {
50 | cancel();
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/core/IndexPath.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.core;
17 |
18 | public class IndexPath {
19 | public int section;
20 | public int positionInSection;
21 |
22 | public IndexPath(int section, int position) {
23 | this.section = section;
24 | this.positionInSection = position;
25 | }
26 |
27 | @Override
28 | public boolean equals(Object o) {
29 | if (o.getClass() != IndexPath.class) {
30 | return false;
31 | }
32 | IndexPath p = (IndexPath) o;
33 | return ((p.section == section) && (p.positionInSection == positionInSection));
34 | }
35 |
36 | @Override
37 | public String toString() {
38 | return "Section: " + section + " index: " + positionInSection;
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/core/SectionedAdapter.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.core;
17 |
18 | import android.view.View;
19 | import android.view.ViewGroup;
20 |
21 | public interface SectionedAdapter {
22 |
23 | public long getItemId(int section, int position);
24 |
25 | public View getItemView(int section, int position, View convertView, ViewGroup parent);
26 |
27 | public View getHeaderViewForSection(int section, View convertView, ViewGroup parent);
28 |
29 | public int getNumberOfSections();
30 |
31 | public Section getSection(int index);
32 |
33 | public Class[] getViewTypes();
34 |
35 | public Class getViewType(FreeFlowItem proxy);
36 |
37 | public boolean shouldDisplaySectionHeaders();
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/layouts/FreeFlowLayoutBase.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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.comcast.freeflow.layouts;
18 |
19 | import com.comcast.freeflow.core.SectionedAdapter;
20 |
21 | public abstract class FreeFlowLayoutBase implements FreeFlowLayout {
22 |
23 | protected int width = -1;
24 | protected int height = -1;
25 |
26 | protected SectionedAdapter itemsAdapter;
27 |
28 | @Override
29 | public void setDimensions(int measuredWidth, int measuredHeight) {
30 | if (measuredHeight == height && measuredWidth == width) {
31 | return;
32 | }
33 | this.width = measuredWidth;
34 | this.height = measuredHeight;
35 | }
36 |
37 |
38 | @Override
39 | public void setAdapter(SectionedAdapter adapter) {
40 | this.itemsAdapter = adapter;
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/examples/Artbook/res/layout/activity_about.xml:
--------------------------------------------------------------------------------
1 |
16 |
23 |
24 |
30 |
31 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/FreeFlowTestsStub/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
16 |
20 |
21 |
24 |
25 |
30 |
31 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/FreeFlowTests/ant.properties:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # This file is used to override default values used by the Ant build system.
17 | #
18 | # This file must be checked into Version Control Systems, as it is
19 | # integral to the build system of your project.
20 |
21 | # This file is only used by the Ant script.
22 |
23 | # You can use this to override default values such as
24 | # 'source.dir' for the location of your java source folder and
25 | # 'out.dir' for the location of your output folder.
26 |
27 | # You can also use it define how the release builds are signed by declaring
28 | # the following properties:
29 | # 'key.store' for the location of your keystore and
30 | # 'key.alias' for the name of the key to use.
31 | # The password will be asked during the build when you use the 'release' target.
32 |
33 | tested.project.dir=../FreeFlowTestsStub
34 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/core/FreeFlowItem.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.core;
17 |
18 | import android.graphics.Rect;
19 | import android.os.Bundle;
20 | import android.view.View;
21 |
22 | public class FreeFlowItem {
23 | public int itemIndex;
24 | public int itemSection;
25 | public Object data;
26 | public boolean isHeader = false;
27 | public Rect frame;
28 | public View view;
29 | public Bundle extras;
30 |
31 | public static FreeFlowItem clone(FreeFlowItem desc) {
32 | if (desc == null)
33 | return null;
34 |
35 | FreeFlowItem fd = new FreeFlowItem();
36 | fd.itemIndex = desc.itemIndex;
37 | fd.itemSection = desc.itemSection;
38 | fd.data = desc.data;
39 | fd.frame = new Rect(desc.frame);
40 | fd.isHeader = desc.isHeader;
41 | fd.view = desc.view;
42 | fd.extras = desc.extras;
43 | return fd;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/FreeFlow/ant.properties:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # This file is used to override default values used by the Ant build system.
17 | #
18 | # This file must be checked into Version Control Systems, as it is
19 | # integral to the build system of your project.
20 |
21 | # This file is only used by the Ant script.
22 |
23 | # You can use this to override default values such as
24 | # 'source.dir' for the location of your java source folder and
25 | # 'out.dir' for the location of your output folder.
26 |
27 | # You can also use it define how the release builds are signed by declaring
28 | # the following properties:
29 | # 'key.store' for the location of your keystore and
30 | # 'key.alias' for the name of the key to use.
31 | # The password will be asked during the build when you use the 'release' target.
32 |
33 | tested.project.dir=/Users/amathu001/Dropbox/_projects/CollectionViewForAndroid/CollectionView2Test/
34 |
--------------------------------------------------------------------------------
/FreeFlow/proguard-project.txt:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # To enable ProGuard in your project, edit project.properties
17 | # to define the proguard.config property as described in that file.
18 | #
19 | # Add project specific ProGuard rules here.
20 | # By default, the flags in this file are appended to flags specified
21 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
22 | # You can edit the include path and order by changing the ProGuard
23 | # include property in project.properties.
24 | #
25 | # For more details, see
26 | # http://developer.android.com/guide/developing/tools/proguard.html
27 |
28 | # Add any project specific keep options here:
29 |
30 | # If your project uses WebView with JS, uncomment the following
31 | # and specify the fully qualified class name to the JavaScript interface
32 | # class:
33 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
34 | # public *;
35 | #}
36 |
--------------------------------------------------------------------------------
/FreeFlowTests/proguard-project.txt:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # To enable ProGuard in your project, edit project.properties
17 | # to define the proguard.config property as described in that file.
18 | #
19 | # Add project specific ProGuard rules here.
20 | # By default, the flags in this file are appended to flags specified
21 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
22 | # You can edit the include path and order by changing the ProGuard
23 | # include property in project.properties.
24 | #
25 | # For more details, see
26 | # http://developer.android.com/guide/developing/tools/proguard.html
27 |
28 | # Add any project specific keep options here:
29 |
30 | # If your project uses WebView with JS, uncomment the following
31 | # and specify the fully qualified class name to the JavaScript interface
32 | # class:
33 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
34 | # public *;
35 | #}
36 |
--------------------------------------------------------------------------------
/FreeFlowTestsStub/proguard-project.txt:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # To enable ProGuard in your project, edit project.properties
17 | # to define the proguard.config property as described in that file.
18 | #
19 | # Add project specific ProGuard rules here.
20 | # By default, the flags in this file are appended to flags specified
21 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
22 | # You can edit the include path and order by changing the ProGuard
23 | # include property in project.properties.
24 | #
25 | # For more details, see
26 | # http://developer.android.com/guide/developing/tools/proguard.html
27 |
28 | # Add any project specific keep options here:
29 |
30 | # If your project uses WebView with JS, uncomment the following
31 | # and specify the fully qualified class name to the JavaScript interface
32 | # class:
33 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
34 | # public *;
35 | #}
36 |
--------------------------------------------------------------------------------
/examples/Artbook/proguard-project.txt:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # To enable ProGuard in your project, edit project.properties
17 | # to define the proguard.config property as described in that file.
18 | #
19 | # Add project specific ProGuard rules here.
20 | # By default, the flags in this file are appended to flags specified
21 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
22 | # You can edit the include path and order by changing the ProGuard
23 | # include property in project.properties.
24 | #
25 | # For more details, see
26 | # http://developer.android.com/guide/developing/tools/proguard.html
27 |
28 | # Add any project specific keep options here:
29 |
30 | # If your project uses WebView with JS, uncomment the following
31 | # and specify the fully qualified class name to the JavaScript interface
32 | # class:
33 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
34 | # public *;
35 | #}
36 |
--------------------------------------------------------------------------------
/examples/PhotoGrid/proguard-project.txt:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------
2 | # Copyright 2013 Comcast Cable Communications Management, LLC
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 | # To enable ProGuard in your project, edit project.properties
17 | # to define the proguard.config property as described in that file.
18 | #
19 | # Add project specific ProGuard rules here.
20 | # By default, the flags in this file are appended to flags specified
21 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
22 | # You can edit the include path and order by changing the ProGuard
23 | # include property in project.properties.
24 | #
25 | # For more details, see
26 | # http://developer.android.com/guide/developing/tools/proguard.html
27 |
28 | # Add any project specific keep options here:
29 |
30 | # If your project uses WebView with JS, uncomment the following
31 | # and specify the fully qualified class name to the JavaScript interface
32 | # class:
33 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
34 | # public *;
35 | #}
36 |
--------------------------------------------------------------------------------
/examples/PhotoGrid/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
21 |
22 |
25 |
26 |
31 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/core/ViewPool.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.core;
17 |
18 | import java.util.ArrayList;
19 | import java.util.LinkedHashMap;
20 |
21 | import android.view.View;
22 |
23 | public class ViewPool {
24 |
25 | private LinkedHashMap> viewPool;
26 |
27 | public ViewPool() {
28 | }
29 |
30 | public void initializeViewPool(Class[] viewTypes) {
31 | viewPool = new LinkedHashMap>();
32 | for (int i = 0; i < viewTypes.length; i++) {
33 | viewPool.put(viewTypes[i], new ArrayList());
34 | }
35 | }
36 |
37 | public void returnViewToPool(View view) {
38 | if (viewPool.containsKey(view.getClass()))
39 | viewPool.get(view.getClass()).add(view);
40 | }
41 |
42 | public View getViewFromPool(Class viewType) {
43 | if (viewPool.get(viewType) == null || viewPool.get(viewType).size() == 0)
44 | return null;
45 |
46 | return viewPool.get(viewType).remove(0);
47 | }
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/examples/Artbook/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
21 |
22 |
25 |
26 |
27 |
28 |
29 |
34 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/examples/PhotoGrid/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
16 |
26 |
27 |
33 |
34 |
40 |
41 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/utils/ViewUtils.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.utils;
17 |
18 | import java.util.Map;
19 |
20 | import android.app.Activity;
21 | import android.content.Context;
22 | import android.graphics.Point;
23 | import android.util.DisplayMetrics;
24 | import android.util.TypedValue;
25 | import android.view.Display;
26 |
27 | import com.comcast.freeflow.core.FreeFlowItem;
28 |
29 | public class ViewUtils {
30 | public static FreeFlowItem getItemAt(Map, FreeFlowItem> frameDescriptors, int x, int y){
31 | FreeFlowItem returnValue = null;
32 |
33 | for(FreeFlowItem item : frameDescriptors.values()) {
34 | if(item.frame.contains((int)x, (int)y)) {
35 | returnValue = item;
36 | }
37 |
38 | }
39 | return returnValue;
40 | }
41 |
42 | public static Point getScreenSize(Activity activity){
43 | Display display = activity.getWindowManager().getDefaultDisplay();
44 | Point size = new Point();
45 | display.getSize(size);
46 | return size;
47 | }
48 |
49 | public static float dipToPixels(Context context, float dipValue) {
50 | DisplayMetrics metrics = context.getResources().getDisplayMetrics();
51 | return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics);
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/examples/PhotoGrid/res/layout/activity_simple.xml:
--------------------------------------------------------------------------------
1 |
16 |
23 |
24 |
29 |
30 |
36 |
37 |
38 |
46 |
47 |
48 |
49 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/FreeFlowTests/src/com/comcast/freeflow/layouts/VGridLayoutTest.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.layouts;
17 |
18 | import java.util.HashMap;
19 | import java.util.Map;
20 |
21 | import com.comcast.freeflow.helpers.DefaultSectionAdapter;
22 | import com.comcast.freeflow.teststub.MainActivity;
23 | import com.comcast.freeflow.core.FreeFlowItem;
24 |
25 | import android.test.ActivityInstrumentationTestCase2;
26 |
27 | public class VGridLayoutTest extends ActivityInstrumentationTestCase2 {
28 |
29 | public VGridLayoutTest() {
30 | super(MainActivity.class);
31 | }
32 |
33 | public void testGridLayoutMath(){
34 | VGridLayout vGrid = new VGridLayout();
35 | vGrid.setLayoutParams(new VGridLayout.LayoutParams(250, 250, 200, 500));
36 | DefaultSectionAdapter adapter = new DefaultSectionAdapter(getActivity(), 2, 5);
37 | vGrid.setAdapter(adapter);
38 |
39 | vGrid.setDimensions(600, 1000);
40 | vGrid.prepareLayout();
41 |
42 | Map extends Object , FreeFlowItem> map ;
43 | map = vGrid.getItemProxies(0, 0);
44 |
45 | assertEquals("VGridLayout did not generate correct number of frames", 5, map.size());
46 | vGrid.setDimensions(600, 1001);
47 | map = vGrid.getItemProxies(0, 0);
48 | assertEquals("VGridLayout did not generate correct number of frames (2) ", 6, map.size());
49 |
50 | FreeFlowItem proxy = map.get( adapter.getSection(0).getHeaderData() );
51 |
52 | assertNotNull("Header frame was null", proxy);
53 |
54 | }
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/core/FreeFlowEventListener.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.core;
17 |
18 | import com.comcast.freeflow.layouts.FreeFlowLayout;
19 |
20 | /**
21 | * Interface that all listeners interested in layout change events must
22 | * implement
23 | *
24 | */
25 | public interface FreeFlowEventListener {
26 |
27 | /**
28 | * Event dispatched when layout change animations are about to begin.
29 | */
30 | public void layoutChangeAnimationsStarting();
31 |
32 | public void layoutChangeAnimationsComplete();
33 |
34 | public void layoutComputed();
35 |
36 | /**
37 | * Dispatched when the underlying data has been changed
38 | */
39 | public void dataChanged();
40 |
41 | /**
42 | * Called when the layout is about to change. Measurements based on the
43 | * current data provider and current size have been completed.
44 | *
45 | * @param oldLayout
46 | * @param newLayout
47 | */
48 | public void onLayoutChanging(FreeFlowLayout oldLayout, FreeFlowLayout newLayout);
49 |
50 | /**
51 | * Dispatched when onLayout is called and views are laid out. Note that onLayout
52 | * could be called because of views moving to new positions during a transition
53 | * animation, so you are passed that value as a boolean.
54 | *
55 | * @param areTransitionAnimationsPlaying Whether layout transition animations are
56 | * playing
57 | */
58 | public void layoutComplete(boolean areTransitionAnimationsPlaying);
59 |
60 |
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/debug/TouchDebugUtils.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.debug;
17 |
18 | import com.comcast.freeflow.core.FreeFlowContainer;
19 |
20 | import android.view.MotionEvent;
21 |
22 | public class TouchDebugUtils {
23 |
24 | public static String getTouchModeString(int touchMode){
25 | switch(touchMode){
26 | case (FreeFlowContainer.TOUCH_MODE_REST): return "touch_mode_rest";
27 | case (FreeFlowContainer.TOUCH_MODE_DOWN): return "touch_mode_down";
28 | case (FreeFlowContainer.TOUCH_MODE_TAP): return "touch_mode_tap";
29 | case (FreeFlowContainer.TOUCH_MODE_SCROLL): return "touch_mode_scroll";
30 | case (FreeFlowContainer.TOUCH_MODE_FLING): return "touch_mode_fling";
31 | case (FreeFlowContainer.TOUCH_MODE_DONE_WAITING): return "touch_mode_done_waiting";
32 | }
33 | return "unknown touch event: "+touchMode;
34 | }
35 |
36 | /* Only single touches for the time being */
37 | public static String getMotionEventString(int action){
38 | switch(action){
39 | case(MotionEvent.ACTION_DOWN): return "action_down";
40 | case(MotionEvent.ACTION_UP): return "action_down";
41 | case(MotionEvent.ACTION_CANCEL): return "action_down";
42 | case(MotionEvent.ACTION_MOVE): return "action_move";
43 | case(MotionEvent.ACTION_OUTSIDE): return "action_outside";
44 | case(MotionEvent.ACTION_HOVER_ENTER): return "action_hover_enter";
45 | case(MotionEvent.ACTION_HOVER_EXIT): return "action_hover_exit";
46 | case(MotionEvent.ACTION_HOVER_MOVE): return "action_hover_move";
47 | case(MotionEvent.ACTION_MASK): return "action_mask";
48 | }
49 | return "unknown action event";
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/FreeFlow/src/com/comcast/freeflow/core/Section.java:
--------------------------------------------------------------------------------
1 | /*******************************************************************************
2 | * Copyright 2013 Comcast Cable Communications Management, LLC
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 | package com.comcast.freeflow.core;
17 |
18 | import java.util.ArrayList;
19 | import java.util.List;
20 |
21 | public class Section {
22 |
23 | protected List