SlideShare a Scribd company logo
1 of 28
Download to read offline
Creating a Facebook Clone - Part XLI
public class NewPostForm extends Form {
private static final String[] POST_STYLES = {
"Label", "PostStyleHearts", "PostStyleHands", "PostStyleBlack",
"PostStyleRed", "PostStylePurple" };
private TextArea post = new TextArea(3, 80);
private String postStyleValue;
private String attachment;
private String mime;
private Button postButton;
private NewPostForm() {
super("Create Post", new BorderLayout());
}
private void initUI(Container postStyles) {
Form current = getCurrentForm();
getToolbar().setBackCommand("Cancel",
Toolbar.BackCommandPolicy.
WHEN_USES_TITLE_OTHERWISE_ARROW,
e -> current.showBack());
Command c = getToolbar().addMaterialCommandToRightBar("",
FontImage.MATERIAL_DONE, e -> post(current));
NewPostForm
public class NewPostForm extends Form {
private static final String[] POST_STYLES = {
"Label", "PostStyleHearts", "PostStyleHands", "PostStyleBlack",
"PostStyleRed", "PostStylePurple" };
private TextArea post = new TextArea(3, 80);
private String postStyleValue;
private String attachment;
private String mime;
private Button postButton;
private NewPostForm() {
super("Create Post", new BorderLayout());
}
private void initUI(Container postStyles) {
Form current = getCurrentForm();
getToolbar().setBackCommand("Cancel",
Toolbar.BackCommandPolicy.
WHEN_USES_TITLE_OTHERWISE_ARROW,
e -> current.showBack());
Command c = getToolbar().addMaterialCommandToRightBar("",
FontImage.MATERIAL_DONE, e -> post(current));
NewPostForm
public class NewPostForm extends Form {
private static final String[] POST_STYLES = {
"Label", "PostStyleHearts", "PostStyleHands", "PostStyleBlack",
"PostStyleRed", "PostStylePurple" };
private TextArea post = new TextArea(3, 80);
private String postStyleValue;
private String attachment;
private String mime;
private Button postButton;
private NewPostForm() {
super("Create Post", new BorderLayout());
}
private void initUI(Container postStyles) {
Form current = getCurrentForm();
getToolbar().setBackCommand("Cancel",
Toolbar.BackCommandPolicy.
WHEN_USES_TITLE_OTHERWISE_ARROW,
e -> current.showBack());
Command c = getToolbar().addMaterialCommandToRightBar("",
FontImage.MATERIAL_DONE, e -> post(current));
NewPostForm
public class NewPostForm extends Form {
private static final String[] POST_STYLES = {
"Label", "PostStyleHearts", "PostStyleHands", "PostStyleBlack",
"PostStyleRed", "PostStylePurple" };
private TextArea post = new TextArea(3, 80);
private String postStyleValue;
private String attachment;
private String mime;
private Button postButton;
private NewPostForm() {
super("Create Post", new BorderLayout());
}
private void initUI(Container postStyles) {
Form current = getCurrentForm();
getToolbar().setBackCommand("Cancel",
Toolbar.BackCommandPolicy.
WHEN_USES_TITLE_OTHERWISE_ARROW,
e -> current.showBack());
Command c = getToolbar().addMaterialCommandToRightBar("",
FontImage.MATERIAL_DONE, e -> post(current));
NewPostForm
BoxLayout.encloseY(
new Label(me.fullName(), "MultiLine1"),
FlowLayout.encloseIn(friends)));
add(NORTH, userSettings);
post.setUIID("Label");
post.setGrowByContent(false);
Component l;
if(postStyles != null) {
l = LayeredLayout.encloseIn(
BorderLayout.north(post), postStyles);
} else {
l = post;
}
add(CENTER, l);
setEditOnShow(post);
}
public static NewPostForm createPost() {
NewPostForm n = new NewPostForm();
Container postStyles = n.createPostStyles(n.post);
n.initUI(BorderLayout.south(postStyles));
return n;
}
NewPostForm
BoxLayout.encloseY(
new Label(me.fullName(), "MultiLine1"),
FlowLayout.encloseIn(friends)));
add(NORTH, userSettings);
post.setUIID("Label");
post.setGrowByContent(false);
Component l;
if(postStyles != null) {
l = LayeredLayout.encloseIn(
BorderLayout.north(post), postStyles);
} else {
l = post;
}
add(CENTER, l);
setEditOnShow(post);
}
public static NewPostForm createPost() {
NewPostForm n = new NewPostForm();
Container postStyles = n.createPostStyles(n.post);
n.initUI(BorderLayout.south(postStyles));
return n;
}
NewPostForm
private NewPostForm() {
super("Create Post", new BorderLayout());
}
private void initUI(Container postStyles) {
Form current = getCurrentForm();
getToolbar().setBackCommand("Cancel",
Toolbar.BackCommandPolicy.
WHEN_USES_TITLE_OTHERWISE_ARROW,
e -> current.showBack());
Command c = getToolbar().addMaterialCommandToRightBar("",
FontImage.MATERIAL_DONE, e -> post(current));
postButton = getToolbar().findCommandComponent(c);
User me = ServerAPI.me();
Container userSettings = BorderLayout.west(
new Label(me.getAvatar(6.5f), "HalfPaddedContainer"));
Button friends = new Button("Friends", "FriendCombo");
FontImage.setMaterialIcon(friends, FontImage.MATERIAL_PEOPLE);
userSettings.add(CENTER,
BoxLayout.encloseY(
new Label(me.fullName(), "MultiLine1"),
FlowLayout.encloseIn(friends)));
add(NORTH, userSettings);
post.setUIID("Label");
NewPostForm
private NewPostForm() {
super("Create Post", new BorderLayout());
}
private void initUI(Container postStyles) {
Form current = getCurrentForm();
getToolbar().setBackCommand("Cancel",
Toolbar.BackCommandPolicy.
WHEN_USES_TITLE_OTHERWISE_ARROW,
e -> current.showBack());
Command c = getToolbar().addMaterialCommandToRightBar("",
FontImage.MATERIAL_DONE, e -> post(current));
postButton = getToolbar().findCommandComponent(c);
User me = ServerAPI.me();
Container userSettings = BorderLayout.west(
new Label(me.getAvatar(6.5f), "HalfPaddedContainer"));
Button friends = new Button("Friends", "FriendCombo");
FontImage.setMaterialIcon(friends, FontImage.MATERIAL_PEOPLE);
userSettings.add(CENTER,
BoxLayout.encloseY(
new Label(me.fullName(), "MultiLine1"),
FlowLayout.encloseIn(friends)));
add(NORTH, userSettings);
post.setUIID("Label");
NewPostForm
FontImage.MATERIAL_DONE, e -> post(current));
postButton = getToolbar().findCommandComponent(c);
User me = ServerAPI.me();
Container userSettings = BorderLayout.west(
new Label(me.getAvatar(6.5f), "HalfPaddedContainer"));
Button friends = new Button("Friends", "FriendCombo");
FontImage.setMaterialIcon(friends, FontImage.MATERIAL_PEOPLE);
userSettings.add(CENTER,
BoxLayout.encloseY(
new Label(me.fullName(), "MultiLine1"),
FlowLayout.encloseIn(friends)));
add(NORTH, userSettings);
post.setUIID("Label");
post.setGrowByContent(false);
Component l;
if(postStyles != null) {
l = LayeredLayout.encloseIn(
BorderLayout.north(post), postStyles);
} else {
l = post;
}
add(CENTER, l);
setEditOnShow(post);
}
NewPostForm
n.initUI(BorderLayout.south(postStyles));
return n;
}
public static NewPostForm createImagePost(EncodedImage img,
ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
n.mime = "image/jpeg";
ScaleImageLabel i = new ScaleImageLabel(img) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
Slider s = n.upload(p);
n.add(SOUTH, LayeredLayout.encloseIn(
i, BorderLayout.south(s)));
return n;
}
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
NewPostForm
n.initUI(BorderLayout.south(postStyles));
return n;
}
public static NewPostForm createImagePost(EncodedImage img,
ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
n.mime = "image/jpeg";
ScaleImageLabel i = new ScaleImageLabel(img) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
Slider s = n.upload(p);
n.add(SOUTH, LayeredLayout.encloseIn(
i, BorderLayout.south(s)));
return n;
}
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
NewPostForm
n.initUI(BorderLayout.south(postStyles));
return n;
}
public static NewPostForm createImagePost(EncodedImage img,
ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
n.mime = "image/jpeg";
ScaleImageLabel i = new ScaleImageLabel(img) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
Slider s = n.upload(p);
n.add(SOUTH, LayeredLayout.encloseIn(
i, BorderLayout.south(s)));
return n;
}
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
NewPostForm
n.initUI(BorderLayout.south(postStyles));
return n;
}
public static NewPostForm createImagePost(EncodedImage img,
ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
n.mime = "image/jpeg";
ScaleImageLabel i = new ScaleImageLabel(img) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
Slider s = n.upload(p);
n.add(SOUTH, LayeredLayout.encloseIn(
i, BorderLayout.south(s)));
return n;
}
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
NewPostForm
n.initUI(BorderLayout.south(postStyles));
return n;
}
public static NewPostForm createImagePost(EncodedImage img,
ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
n.mime = "image/jpeg";
ScaleImageLabel i = new ScaleImageLabel(img) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
Slider s = n.upload(p);
n.add(SOUTH, LayeredLayout.encloseIn(
i, BorderLayout.south(s)));
return n;
}
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
NewPostForm
n.initUI(BorderLayout.south(postStyles));
return n;
}
public static NewPostForm createImagePost(EncodedImage img,
ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
n.mime = "image/jpeg";
ScaleImageLabel i = new ScaleImageLabel(img) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
Slider s = n.upload(p);
n.add(SOUTH, LayeredLayout.encloseIn(
i, BorderLayout.south(s)));
return n;
}
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
NewPostForm
}
};
videoContainer.add(m.getVideoComponent());
videoContainer.add(BorderLayout.south(s));
n.add(SOUTH, videoContainer);
n.addShowListener(e -> {
m.play();
m.setVolume(0);
m.setTime(Math.min(m.getDuration() / 2, 1000));
m.pause();
});
return n;
}
private Slider upload(ImagePicker p) {
postButton.setEnabled(false);
Slider s = new Slider();
MultipartRequest m = p.upload(e -> {
attachment = e;
postButton.setEnabled(true);
});
SliderBridge.bindProgress(m, s);
return s;
}
NewPostForm
}
};
videoContainer.add(m.getVideoComponent());
videoContainer.add(BorderLayout.south(s));
n.add(SOUTH, videoContainer);
n.addShowListener(e -> {
m.play();
m.setVolume(0);
m.setTime(Math.min(m.getDuration() / 2, 1000));
m.pause();
});
return n;
}
private Slider upload(ImagePicker p) {
postButton.setEnabled(false);
Slider s = new Slider();
MultipartRequest m = p.upload(e -> {
attachment = e;
postButton.setEnabled(true);
});
SliderBridge.bindProgress(m, s);
return s;
}
NewPostForm
}
};
videoContainer.add(m.getVideoComponent());
videoContainer.add(BorderLayout.south(s));
n.add(SOUTH, videoContainer);
n.addShowListener(e -> {
m.play();
m.setVolume(0);
m.setTime(Math.min(m.getDuration() / 2, 1000));
m.pause();
});
return n;
}
private Slider upload(ImagePicker p) {
postButton.setEnabled(false);
Slider s = new Slider();
MultipartRequest m = p.upload(e -> {
attachment = e;
postButton.setEnabled(true);
});
SliderBridge.bindProgress(m, s);
return s;
}
NewPostForm
}
};
videoContainer.add(m.getVideoComponent());
videoContainer.add(BorderLayout.south(s));
n.add(SOUTH, videoContainer);
n.addShowListener(e -> {
m.play();
m.setVolume(0);
m.setTime(Math.min(m.getDuration() / 2, 1000));
m.pause();
});
return n;
}
private Slider upload(ImagePicker p) {
postButton.setEnabled(false);
Slider s = new Slider();
MultipartRequest m = p.upload(e -> {
attachment = e;
postButton.setEnabled(true);
});
SliderBridge.bindProgress(m, s);
return s;
}
NewPostForm
postButton.setEnabled(true);
});
SliderBridge.bindProgress(m, s);
return s;
}
private void post(Form previousForm) {
Dialog dlg = new InfiniteProgress().showInifiniteBlocking();
Post p = new Post().
content.set(post.getText()).
visibility.set("public").
styling.set(postStyleValue);
if(attachment != null) {
p.attachments.put(attachment, mime);
}
if(!ServerAPI.post(p)) {
dlg.dispose();
ToastBar.showErrorMessage("Error posting to server");
return;
}
previousForm.showBack();
}
private Container createPostStyles(TextArea post) {
NewPostForm
postButton.setEnabled(true);
});
SliderBridge.bindProgress(m, s);
return s;
}
private void post(Form previousForm) {
Dialog dlg = new InfiniteProgress().showInifiniteBlocking();
Post p = new Post().
content.set(post.getText()).
visibility.set("public").
styling.set(postStyleValue);
if(attachment != null) {
p.attachments.put(attachment, mime);
}
if(!ServerAPI.post(p)) {
dlg.dispose();
ToastBar.showErrorMessage("Error posting to server");
return;
}
previousForm.showBack();
}
private Container createPostStyles(TextArea post) {
NewPostForm
postButton.setEnabled(true);
});
SliderBridge.bindProgress(m, s);
return s;
}
private void post(Form previousForm) {
Dialog dlg = new InfiniteProgress().showInifiniteBlocking();
Post p = new Post().
content.set(post.getText()).
visibility.set("public").
styling.set(postStyleValue);
if(attachment != null) {
p.attachments.put(attachment, mime);
}
if(!ServerAPI.post(p)) {
dlg.dispose();
ToastBar.showErrorMessage("Error posting to server");
return;
}
previousForm.showBack();
}
private Container createPostStyles(TextArea post) {
NewPostForm
i, BorderLayout.south(s)));
return n;
}
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
Slider s = n.upload(p);
n.mime = "video/mp4";
Container videoContainer = new Container(new LayeredLayout()) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
videoContainer.add(m.getVideoComponent());
videoContainer.add(BorderLayout.south(s));
n.add(SOUTH, videoContainer);
n.addShowListener(e -> {
m.play();
m.setVolume(0);
m.setTime(Math.min(m.getDuration() / 2, 1000));
m.pause();
NewPostForm
i, BorderLayout.south(s)));
return n;
}
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
Slider s = n.upload(p);
n.mime = "video/mp4";
Container videoContainer = new Container(new LayeredLayout()) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
videoContainer.add(m.getVideoComponent());
videoContainer.add(BorderLayout.south(s));
n.add(SOUTH, videoContainer);
n.addShowListener(e -> {
m.play();
m.setVolume(0);
m.setTime(Math.min(m.getDuration() / 2, 1000));
m.pause();
NewPostForm
i, BorderLayout.south(s)));
return n;
}
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
Slider s = n.upload(p);
n.mime = "video/mp4";
Container videoContainer = new Container(new LayeredLayout()) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
videoContainer.add(m.getVideoComponent());
videoContainer.add(BorderLayout.south(s));
n.add(SOUTH, videoContainer);
n.addShowListener(e -> {
m.play();
m.setVolume(0);
m.setTime(Math.min(m.getDuration() / 2, 1000));
m.pause();
NewPostForm
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
Slider s = n.upload(p);
n.mime = "video/mp4";
Container videoContainer = new Container(new LayeredLayout()) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
videoContainer.add(m.getVideoComponent());
videoContainer.add(BorderLayout.south(s));
n.add(SOUTH, videoContainer);
n.addShowListener(e -> {
m.play();
m.setVolume(0);
m.setTime(Math.min(m.getDuration() / 2, 1000));
m.pause();
});
return n;
}
NewPostForm
public static NewPostForm createVideoPost(Media m, ImagePicker p) {
NewPostForm n = new NewPostForm();
n.initUI(null);
Slider s = n.upload(p);
n.mime = "video/mp4";
Container videoContainer = new Container(new LayeredLayout()) {
@Override
protected Dimension calcPreferredSize() {
return new Dimension(getDisplayWidth(),
getDisplayHeight() / 2);
}
};
videoContainer.add(m.getVideoComponent());
videoContainer.add(BorderLayout.south(s));
n.add(SOUTH, videoContainer);
n.addShowListener(e -> {
m.play();
m.setVolume(0);
m.setTime(Math.min(m.getDuration() / 2, 1000));
m.pause();
});
return n;
}
NewPostForm

More Related Content

Similar to Creating a Facebook Clone - Part XLI.pdf

Creating a Facebook Clone - Part VI - Transcript.pdf
Creating a Facebook Clone - Part VI - Transcript.pdfCreating a Facebook Clone - Part VI - Transcript.pdf
Creating a Facebook Clone - Part VI - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part VII.pdf
Creating a Facebook Clone - Part VII.pdfCreating a Facebook Clone - Part VII.pdf
Creating a Facebook Clone - Part VII.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XLIII.pdf
Creating a Facebook Clone - Part XLIII.pdfCreating a Facebook Clone - Part XLIII.pdf
Creating a Facebook Clone - Part XLIII.pdfShaiAlmog1
 
Creating a Facebook Clone - Part VI.pdf
Creating a Facebook Clone - Part VI.pdfCreating a Facebook Clone - Part VI.pdf
Creating a Facebook Clone - Part VI.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XXXV.pdf
Creating a Facebook Clone - Part XXXV.pdfCreating a Facebook Clone - Part XXXV.pdf
Creating a Facebook Clone - Part XXXV.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XXXVI - Transcript.pdf
Creating a Facebook Clone - Part XXXVI - Transcript.pdfCreating a Facebook Clone - Part XXXVI - Transcript.pdf
Creating a Facebook Clone - Part XXXVI - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdfCreating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdfShaiAlmog1
 
Initial UI Mockup - Part 2.pdf
Initial UI Mockup - Part 2.pdfInitial UI Mockup - Part 2.pdf
Initial UI Mockup - Part 2.pdfShaiAlmog1
 
2. Section 2. Implementing functionality in the PersonEntry. (1.5 ma.pdf
2. Section 2. Implementing functionality in the PersonEntry. (1.5 ma.pdf2. Section 2. Implementing functionality in the PersonEntry. (1.5 ma.pdf
2. Section 2. Implementing functionality in the PersonEntry. (1.5 ma.pdfallwayscollection
 
Creating a Facebook Clone - Part XXXVI.pdf
Creating a Facebook Clone - Part XXXVI.pdfCreating a Facebook Clone - Part XXXVI.pdf
Creating a Facebook Clone - Part XXXVI.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XII.pdf
Creating a Facebook Clone - Part XII.pdfCreating a Facebook Clone - Part XII.pdf
Creating a Facebook Clone - Part XII.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XXVIII.pdf
Creating a Facebook Clone - Part XXVIII.pdfCreating a Facebook Clone - Part XXVIII.pdf
Creating a Facebook Clone - Part XXVIII.pdfShaiAlmog1
 
Creating an Uber Clone - Part XXXIX.pdf
Creating an Uber Clone - Part XXXIX.pdfCreating an Uber Clone - Part XXXIX.pdf
Creating an Uber Clone - Part XXXIX.pdfShaiAlmog1
 
Creating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdfCreating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XLVI.pdf
Creating a Facebook Clone - Part XLVI.pdfCreating a Facebook Clone - Part XLVI.pdf
Creating a Facebook Clone - Part XLVI.pdfShaiAlmog1
 
Initial UI Mockup - Part 3 - Transcript.pdf
Initial UI Mockup - Part 3 - Transcript.pdfInitial UI Mockup - Part 3 - Transcript.pdf
Initial UI Mockup - Part 3 - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XLVI - Transcript.pdf
Creating a Facebook Clone - Part XLVI - Transcript.pdfCreating a Facebook Clone - Part XLVI - Transcript.pdf
Creating a Facebook Clone - Part XLVI - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XXXV - Transcript.pdf
Creating a Facebook Clone - Part XXXV - Transcript.pdfCreating a Facebook Clone - Part XXXV - Transcript.pdf
Creating a Facebook Clone - Part XXXV - Transcript.pdfShaiAlmog1
 
Creating a Facebook Clone - Part XXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXVIII - Transcript.pdfCreating a Facebook Clone - Part XXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXVIII - Transcript.pdfShaiAlmog1
 
Creating an Uber Clone - Part IX.pdf
Creating an Uber Clone - Part IX.pdfCreating an Uber Clone - Part IX.pdf
Creating an Uber Clone - Part IX.pdfShaiAlmog1
 

Similar to Creating a Facebook Clone - Part XLI.pdf (20)

Creating a Facebook Clone - Part VI - Transcript.pdf
Creating a Facebook Clone - Part VI - Transcript.pdfCreating a Facebook Clone - Part VI - Transcript.pdf
Creating a Facebook Clone - Part VI - Transcript.pdf
 
Creating a Facebook Clone - Part VII.pdf
Creating a Facebook Clone - Part VII.pdfCreating a Facebook Clone - Part VII.pdf
Creating a Facebook Clone - Part VII.pdf
 
Creating a Facebook Clone - Part XLIII.pdf
Creating a Facebook Clone - Part XLIII.pdfCreating a Facebook Clone - Part XLIII.pdf
Creating a Facebook Clone - Part XLIII.pdf
 
Creating a Facebook Clone - Part VI.pdf
Creating a Facebook Clone - Part VI.pdfCreating a Facebook Clone - Part VI.pdf
Creating a Facebook Clone - Part VI.pdf
 
Creating a Facebook Clone - Part XXXV.pdf
Creating a Facebook Clone - Part XXXV.pdfCreating a Facebook Clone - Part XXXV.pdf
Creating a Facebook Clone - Part XXXV.pdf
 
Creating a Facebook Clone - Part XXXVI - Transcript.pdf
Creating a Facebook Clone - Part XXXVI - Transcript.pdfCreating a Facebook Clone - Part XXXVI - Transcript.pdf
Creating a Facebook Clone - Part XXXVI - Transcript.pdf
 
Creating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdfCreating a Facebook Clone - Part XI.pdf
Creating a Facebook Clone - Part XI.pdf
 
Initial UI Mockup - Part 2.pdf
Initial UI Mockup - Part 2.pdfInitial UI Mockup - Part 2.pdf
Initial UI Mockup - Part 2.pdf
 
2. Section 2. Implementing functionality in the PersonEntry. (1.5 ma.pdf
2. Section 2. Implementing functionality in the PersonEntry. (1.5 ma.pdf2. Section 2. Implementing functionality in the PersonEntry. (1.5 ma.pdf
2. Section 2. Implementing functionality in the PersonEntry. (1.5 ma.pdf
 
Creating a Facebook Clone - Part XXXVI.pdf
Creating a Facebook Clone - Part XXXVI.pdfCreating a Facebook Clone - Part XXXVI.pdf
Creating a Facebook Clone - Part XXXVI.pdf
 
Creating a Facebook Clone - Part XII.pdf
Creating a Facebook Clone - Part XII.pdfCreating a Facebook Clone - Part XII.pdf
Creating a Facebook Clone - Part XII.pdf
 
Creating a Facebook Clone - Part XXVIII.pdf
Creating a Facebook Clone - Part XXVIII.pdfCreating a Facebook Clone - Part XXVIII.pdf
Creating a Facebook Clone - Part XXVIII.pdf
 
Creating an Uber Clone - Part XXXIX.pdf
Creating an Uber Clone - Part XXXIX.pdfCreating an Uber Clone - Part XXXIX.pdf
Creating an Uber Clone - Part XXXIX.pdf
 
Creating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdfCreating an Uber Clone - Part XXXX.pdf
Creating an Uber Clone - Part XXXX.pdf
 
Creating a Facebook Clone - Part XLVI.pdf
Creating a Facebook Clone - Part XLVI.pdfCreating a Facebook Clone - Part XLVI.pdf
Creating a Facebook Clone - Part XLVI.pdf
 
Initial UI Mockup - Part 3 - Transcript.pdf
Initial UI Mockup - Part 3 - Transcript.pdfInitial UI Mockup - Part 3 - Transcript.pdf
Initial UI Mockup - Part 3 - Transcript.pdf
 
Creating a Facebook Clone - Part XLVI - Transcript.pdf
Creating a Facebook Clone - Part XLVI - Transcript.pdfCreating a Facebook Clone - Part XLVI - Transcript.pdf
Creating a Facebook Clone - Part XLVI - Transcript.pdf
 
Creating a Facebook Clone - Part XXXV - Transcript.pdf
Creating a Facebook Clone - Part XXXV - Transcript.pdfCreating a Facebook Clone - Part XXXV - Transcript.pdf
Creating a Facebook Clone - Part XXXV - Transcript.pdf
 
Creating a Facebook Clone - Part XXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXVIII - Transcript.pdfCreating a Facebook Clone - Part XXVIII - Transcript.pdf
Creating a Facebook Clone - Part XXVIII - Transcript.pdf
 
Creating an Uber Clone - Part IX.pdf
Creating an Uber Clone - Part IX.pdfCreating an Uber Clone - Part IX.pdf
Creating an Uber Clone - Part IX.pdf
 

More from ShaiAlmog1

The Duck Teaches Learn to debug from the masters. Local to production- kill ...
The Duck Teaches  Learn to debug from the masters. Local to production- kill ...The Duck Teaches  Learn to debug from the masters. Local to production- kill ...
The Duck Teaches Learn to debug from the masters. Local to production- kill ...ShaiAlmog1
 
create-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfcreate-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfShaiAlmog1
 
create-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfcreate-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfShaiAlmog1
 
create-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfcreate-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfShaiAlmog1
 
create-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfcreate-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfShaiAlmog1
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfShaiAlmog1
 
create-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfcreate-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfShaiAlmog1
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfShaiAlmog1
 
create-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfcreate-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfShaiAlmog1
 
create-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfcreate-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfShaiAlmog1
 
create-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfcreate-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfShaiAlmog1
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfShaiAlmog1
 
create-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfcreate-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfCreating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfCreating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfCreating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfCreating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfCreating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfCreating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfShaiAlmog1
 
Creating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfCreating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfShaiAlmog1
 

More from ShaiAlmog1 (20)

The Duck Teaches Learn to debug from the masters. Local to production- kill ...
The Duck Teaches  Learn to debug from the masters. Local to production- kill ...The Duck Teaches  Learn to debug from the masters. Local to production- kill ...
The Duck Teaches Learn to debug from the masters. Local to production- kill ...
 
create-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdfcreate-netflix-clone-06-client-ui.pdf
create-netflix-clone-06-client-ui.pdf
 
create-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdfcreate-netflix-clone-01-introduction_transcript.pdf
create-netflix-clone-01-introduction_transcript.pdf
 
create-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdfcreate-netflix-clone-02-server_transcript.pdf
create-netflix-clone-02-server_transcript.pdf
 
create-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdfcreate-netflix-clone-04-server-continued_transcript.pdf
create-netflix-clone-04-server-continued_transcript.pdf
 
create-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdfcreate-netflix-clone-01-introduction.pdf
create-netflix-clone-01-introduction.pdf
 
create-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdfcreate-netflix-clone-06-client-ui_transcript.pdf
create-netflix-clone-06-client-ui_transcript.pdf
 
create-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdfcreate-netflix-clone-03-server.pdf
create-netflix-clone-03-server.pdf
 
create-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdfcreate-netflix-clone-04-server-continued.pdf
create-netflix-clone-04-server-continued.pdf
 
create-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdfcreate-netflix-clone-05-client-model_transcript.pdf
create-netflix-clone-05-client-model_transcript.pdf
 
create-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdfcreate-netflix-clone-03-server_transcript.pdf
create-netflix-clone-03-server_transcript.pdf
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdf
 
create-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdfcreate-netflix-clone-05-client-model.pdf
create-netflix-clone-05-client-model.pdf
 
Creating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdfCreating a Whatsapp Clone - Part II.pdf
Creating a Whatsapp Clone - Part II.pdf
 
Creating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdfCreating a Whatsapp Clone - Part IX - Transcript.pdf
Creating a Whatsapp Clone - Part IX - Transcript.pdf
 
Creating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdfCreating a Whatsapp Clone - Part II - Transcript.pdf
Creating a Whatsapp Clone - Part II - Transcript.pdf
 
Creating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdfCreating a Whatsapp Clone - Part V - Transcript.pdf
Creating a Whatsapp Clone - Part V - Transcript.pdf
 
Creating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdfCreating a Whatsapp Clone - Part IV - Transcript.pdf
Creating a Whatsapp Clone - Part IV - Transcript.pdf
 
Creating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdfCreating a Whatsapp Clone - Part IV.pdf
Creating a Whatsapp Clone - Part IV.pdf
 
Creating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdfCreating a Whatsapp Clone - Part I - Transcript.pdf
Creating a Whatsapp Clone - Part I - Transcript.pdf
 

Recently uploaded

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 

Recently uploaded (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

Creating a Facebook Clone - Part XLI.pdf

  • 1. Creating a Facebook Clone - Part XLI
  • 2. public class NewPostForm extends Form { private static final String[] POST_STYLES = { "Label", "PostStyleHearts", "PostStyleHands", "PostStyleBlack", "PostStyleRed", "PostStylePurple" }; private TextArea post = new TextArea(3, 80); private String postStyleValue; private String attachment; private String mime; private Button postButton; private NewPostForm() { super("Create Post", new BorderLayout()); } private void initUI(Container postStyles) { Form current = getCurrentForm(); getToolbar().setBackCommand("Cancel", Toolbar.BackCommandPolicy. WHEN_USES_TITLE_OTHERWISE_ARROW, e -> current.showBack()); Command c = getToolbar().addMaterialCommandToRightBar("", FontImage.MATERIAL_DONE, e -> post(current)); NewPostForm
  • 3. public class NewPostForm extends Form { private static final String[] POST_STYLES = { "Label", "PostStyleHearts", "PostStyleHands", "PostStyleBlack", "PostStyleRed", "PostStylePurple" }; private TextArea post = new TextArea(3, 80); private String postStyleValue; private String attachment; private String mime; private Button postButton; private NewPostForm() { super("Create Post", new BorderLayout()); } private void initUI(Container postStyles) { Form current = getCurrentForm(); getToolbar().setBackCommand("Cancel", Toolbar.BackCommandPolicy. WHEN_USES_TITLE_OTHERWISE_ARROW, e -> current.showBack()); Command c = getToolbar().addMaterialCommandToRightBar("", FontImage.MATERIAL_DONE, e -> post(current)); NewPostForm
  • 4. public class NewPostForm extends Form { private static final String[] POST_STYLES = { "Label", "PostStyleHearts", "PostStyleHands", "PostStyleBlack", "PostStyleRed", "PostStylePurple" }; private TextArea post = new TextArea(3, 80); private String postStyleValue; private String attachment; private String mime; private Button postButton; private NewPostForm() { super("Create Post", new BorderLayout()); } private void initUI(Container postStyles) { Form current = getCurrentForm(); getToolbar().setBackCommand("Cancel", Toolbar.BackCommandPolicy. WHEN_USES_TITLE_OTHERWISE_ARROW, e -> current.showBack()); Command c = getToolbar().addMaterialCommandToRightBar("", FontImage.MATERIAL_DONE, e -> post(current)); NewPostForm
  • 5. public class NewPostForm extends Form { private static final String[] POST_STYLES = { "Label", "PostStyleHearts", "PostStyleHands", "PostStyleBlack", "PostStyleRed", "PostStylePurple" }; private TextArea post = new TextArea(3, 80); private String postStyleValue; private String attachment; private String mime; private Button postButton; private NewPostForm() { super("Create Post", new BorderLayout()); } private void initUI(Container postStyles) { Form current = getCurrentForm(); getToolbar().setBackCommand("Cancel", Toolbar.BackCommandPolicy. WHEN_USES_TITLE_OTHERWISE_ARROW, e -> current.showBack()); Command c = getToolbar().addMaterialCommandToRightBar("", FontImage.MATERIAL_DONE, e -> post(current)); NewPostForm
  • 6. BoxLayout.encloseY( new Label(me.fullName(), "MultiLine1"), FlowLayout.encloseIn(friends))); add(NORTH, userSettings); post.setUIID("Label"); post.setGrowByContent(false); Component l; if(postStyles != null) { l = LayeredLayout.encloseIn( BorderLayout.north(post), postStyles); } else { l = post; } add(CENTER, l); setEditOnShow(post); } public static NewPostForm createPost() { NewPostForm n = new NewPostForm(); Container postStyles = n.createPostStyles(n.post); n.initUI(BorderLayout.south(postStyles)); return n; } NewPostForm
  • 7. BoxLayout.encloseY( new Label(me.fullName(), "MultiLine1"), FlowLayout.encloseIn(friends))); add(NORTH, userSettings); post.setUIID("Label"); post.setGrowByContent(false); Component l; if(postStyles != null) { l = LayeredLayout.encloseIn( BorderLayout.north(post), postStyles); } else { l = post; } add(CENTER, l); setEditOnShow(post); } public static NewPostForm createPost() { NewPostForm n = new NewPostForm(); Container postStyles = n.createPostStyles(n.post); n.initUI(BorderLayout.south(postStyles)); return n; } NewPostForm
  • 8. private NewPostForm() { super("Create Post", new BorderLayout()); } private void initUI(Container postStyles) { Form current = getCurrentForm(); getToolbar().setBackCommand("Cancel", Toolbar.BackCommandPolicy. WHEN_USES_TITLE_OTHERWISE_ARROW, e -> current.showBack()); Command c = getToolbar().addMaterialCommandToRightBar("", FontImage.MATERIAL_DONE, e -> post(current)); postButton = getToolbar().findCommandComponent(c); User me = ServerAPI.me(); Container userSettings = BorderLayout.west( new Label(me.getAvatar(6.5f), "HalfPaddedContainer")); Button friends = new Button("Friends", "FriendCombo"); FontImage.setMaterialIcon(friends, FontImage.MATERIAL_PEOPLE); userSettings.add(CENTER, BoxLayout.encloseY( new Label(me.fullName(), "MultiLine1"), FlowLayout.encloseIn(friends))); add(NORTH, userSettings); post.setUIID("Label"); NewPostForm
  • 9. private NewPostForm() { super("Create Post", new BorderLayout()); } private void initUI(Container postStyles) { Form current = getCurrentForm(); getToolbar().setBackCommand("Cancel", Toolbar.BackCommandPolicy. WHEN_USES_TITLE_OTHERWISE_ARROW, e -> current.showBack()); Command c = getToolbar().addMaterialCommandToRightBar("", FontImage.MATERIAL_DONE, e -> post(current)); postButton = getToolbar().findCommandComponent(c); User me = ServerAPI.me(); Container userSettings = BorderLayout.west( new Label(me.getAvatar(6.5f), "HalfPaddedContainer")); Button friends = new Button("Friends", "FriendCombo"); FontImage.setMaterialIcon(friends, FontImage.MATERIAL_PEOPLE); userSettings.add(CENTER, BoxLayout.encloseY( new Label(me.fullName(), "MultiLine1"), FlowLayout.encloseIn(friends))); add(NORTH, userSettings); post.setUIID("Label"); NewPostForm
  • 10. FontImage.MATERIAL_DONE, e -> post(current)); postButton = getToolbar().findCommandComponent(c); User me = ServerAPI.me(); Container userSettings = BorderLayout.west( new Label(me.getAvatar(6.5f), "HalfPaddedContainer")); Button friends = new Button("Friends", "FriendCombo"); FontImage.setMaterialIcon(friends, FontImage.MATERIAL_PEOPLE); userSettings.add(CENTER, BoxLayout.encloseY( new Label(me.fullName(), "MultiLine1"), FlowLayout.encloseIn(friends))); add(NORTH, userSettings); post.setUIID("Label"); post.setGrowByContent(false); Component l; if(postStyles != null) { l = LayeredLayout.encloseIn( BorderLayout.north(post), postStyles); } else { l = post; } add(CENTER, l); setEditOnShow(post); } NewPostForm
  • 11. n.initUI(BorderLayout.south(postStyles)); return n; } public static NewPostForm createImagePost(EncodedImage img, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); n.mime = "image/jpeg"; ScaleImageLabel i = new ScaleImageLabel(img) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; Slider s = n.upload(p); n.add(SOUTH, LayeredLayout.encloseIn( i, BorderLayout.south(s))); return n; } public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); NewPostForm
  • 12. n.initUI(BorderLayout.south(postStyles)); return n; } public static NewPostForm createImagePost(EncodedImage img, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); n.mime = "image/jpeg"; ScaleImageLabel i = new ScaleImageLabel(img) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; Slider s = n.upload(p); n.add(SOUTH, LayeredLayout.encloseIn( i, BorderLayout.south(s))); return n; } public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); NewPostForm
  • 13. n.initUI(BorderLayout.south(postStyles)); return n; } public static NewPostForm createImagePost(EncodedImage img, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); n.mime = "image/jpeg"; ScaleImageLabel i = new ScaleImageLabel(img) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; Slider s = n.upload(p); n.add(SOUTH, LayeredLayout.encloseIn( i, BorderLayout.south(s))); return n; } public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); NewPostForm
  • 14. n.initUI(BorderLayout.south(postStyles)); return n; } public static NewPostForm createImagePost(EncodedImage img, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); n.mime = "image/jpeg"; ScaleImageLabel i = new ScaleImageLabel(img) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; Slider s = n.upload(p); n.add(SOUTH, LayeredLayout.encloseIn( i, BorderLayout.south(s))); return n; } public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); NewPostForm
  • 15. n.initUI(BorderLayout.south(postStyles)); return n; } public static NewPostForm createImagePost(EncodedImage img, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); n.mime = "image/jpeg"; ScaleImageLabel i = new ScaleImageLabel(img) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; Slider s = n.upload(p); n.add(SOUTH, LayeredLayout.encloseIn( i, BorderLayout.south(s))); return n; } public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); NewPostForm
  • 16. n.initUI(BorderLayout.south(postStyles)); return n; } public static NewPostForm createImagePost(EncodedImage img, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); n.mime = "image/jpeg"; ScaleImageLabel i = new ScaleImageLabel(img) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; Slider s = n.upload(p); n.add(SOUTH, LayeredLayout.encloseIn( i, BorderLayout.south(s))); return n; } public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); NewPostForm
  • 17. } }; videoContainer.add(m.getVideoComponent()); videoContainer.add(BorderLayout.south(s)); n.add(SOUTH, videoContainer); n.addShowListener(e -> { m.play(); m.setVolume(0); m.setTime(Math.min(m.getDuration() / 2, 1000)); m.pause(); }); return n; } private Slider upload(ImagePicker p) { postButton.setEnabled(false); Slider s = new Slider(); MultipartRequest m = p.upload(e -> { attachment = e; postButton.setEnabled(true); }); SliderBridge.bindProgress(m, s); return s; } NewPostForm
  • 18. } }; videoContainer.add(m.getVideoComponent()); videoContainer.add(BorderLayout.south(s)); n.add(SOUTH, videoContainer); n.addShowListener(e -> { m.play(); m.setVolume(0); m.setTime(Math.min(m.getDuration() / 2, 1000)); m.pause(); }); return n; } private Slider upload(ImagePicker p) { postButton.setEnabled(false); Slider s = new Slider(); MultipartRequest m = p.upload(e -> { attachment = e; postButton.setEnabled(true); }); SliderBridge.bindProgress(m, s); return s; } NewPostForm
  • 19. } }; videoContainer.add(m.getVideoComponent()); videoContainer.add(BorderLayout.south(s)); n.add(SOUTH, videoContainer); n.addShowListener(e -> { m.play(); m.setVolume(0); m.setTime(Math.min(m.getDuration() / 2, 1000)); m.pause(); }); return n; } private Slider upload(ImagePicker p) { postButton.setEnabled(false); Slider s = new Slider(); MultipartRequest m = p.upload(e -> { attachment = e; postButton.setEnabled(true); }); SliderBridge.bindProgress(m, s); return s; } NewPostForm
  • 20. } }; videoContainer.add(m.getVideoComponent()); videoContainer.add(BorderLayout.south(s)); n.add(SOUTH, videoContainer); n.addShowListener(e -> { m.play(); m.setVolume(0); m.setTime(Math.min(m.getDuration() / 2, 1000)); m.pause(); }); return n; } private Slider upload(ImagePicker p) { postButton.setEnabled(false); Slider s = new Slider(); MultipartRequest m = p.upload(e -> { attachment = e; postButton.setEnabled(true); }); SliderBridge.bindProgress(m, s); return s; } NewPostForm
  • 21. postButton.setEnabled(true); }); SliderBridge.bindProgress(m, s); return s; } private void post(Form previousForm) { Dialog dlg = new InfiniteProgress().showInifiniteBlocking(); Post p = new Post(). content.set(post.getText()). visibility.set("public"). styling.set(postStyleValue); if(attachment != null) { p.attachments.put(attachment, mime); } if(!ServerAPI.post(p)) { dlg.dispose(); ToastBar.showErrorMessage("Error posting to server"); return; } previousForm.showBack(); } private Container createPostStyles(TextArea post) { NewPostForm
  • 22. postButton.setEnabled(true); }); SliderBridge.bindProgress(m, s); return s; } private void post(Form previousForm) { Dialog dlg = new InfiniteProgress().showInifiniteBlocking(); Post p = new Post(). content.set(post.getText()). visibility.set("public"). styling.set(postStyleValue); if(attachment != null) { p.attachments.put(attachment, mime); } if(!ServerAPI.post(p)) { dlg.dispose(); ToastBar.showErrorMessage("Error posting to server"); return; } previousForm.showBack(); } private Container createPostStyles(TextArea post) { NewPostForm
  • 23. postButton.setEnabled(true); }); SliderBridge.bindProgress(m, s); return s; } private void post(Form previousForm) { Dialog dlg = new InfiniteProgress().showInifiniteBlocking(); Post p = new Post(). content.set(post.getText()). visibility.set("public"). styling.set(postStyleValue); if(attachment != null) { p.attachments.put(attachment, mime); } if(!ServerAPI.post(p)) { dlg.dispose(); ToastBar.showErrorMessage("Error posting to server"); return; } previousForm.showBack(); } private Container createPostStyles(TextArea post) { NewPostForm
  • 24. i, BorderLayout.south(s))); return n; } public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); Slider s = n.upload(p); n.mime = "video/mp4"; Container videoContainer = new Container(new LayeredLayout()) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; videoContainer.add(m.getVideoComponent()); videoContainer.add(BorderLayout.south(s)); n.add(SOUTH, videoContainer); n.addShowListener(e -> { m.play(); m.setVolume(0); m.setTime(Math.min(m.getDuration() / 2, 1000)); m.pause(); NewPostForm
  • 25. i, BorderLayout.south(s))); return n; } public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); Slider s = n.upload(p); n.mime = "video/mp4"; Container videoContainer = new Container(new LayeredLayout()) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; videoContainer.add(m.getVideoComponent()); videoContainer.add(BorderLayout.south(s)); n.add(SOUTH, videoContainer); n.addShowListener(e -> { m.play(); m.setVolume(0); m.setTime(Math.min(m.getDuration() / 2, 1000)); m.pause(); NewPostForm
  • 26. i, BorderLayout.south(s))); return n; } public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); Slider s = n.upload(p); n.mime = "video/mp4"; Container videoContainer = new Container(new LayeredLayout()) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; videoContainer.add(m.getVideoComponent()); videoContainer.add(BorderLayout.south(s)); n.add(SOUTH, videoContainer); n.addShowListener(e -> { m.play(); m.setVolume(0); m.setTime(Math.min(m.getDuration() / 2, 1000)); m.pause(); NewPostForm
  • 27. public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); Slider s = n.upload(p); n.mime = "video/mp4"; Container videoContainer = new Container(new LayeredLayout()) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; videoContainer.add(m.getVideoComponent()); videoContainer.add(BorderLayout.south(s)); n.add(SOUTH, videoContainer); n.addShowListener(e -> { m.play(); m.setVolume(0); m.setTime(Math.min(m.getDuration() / 2, 1000)); m.pause(); }); return n; } NewPostForm
  • 28. public static NewPostForm createVideoPost(Media m, ImagePicker p) { NewPostForm n = new NewPostForm(); n.initUI(null); Slider s = n.upload(p); n.mime = "video/mp4"; Container videoContainer = new Container(new LayeredLayout()) { @Override protected Dimension calcPreferredSize() { return new Dimension(getDisplayWidth(), getDisplayHeight() / 2); } }; videoContainer.add(m.getVideoComponent()); videoContainer.add(BorderLayout.south(s)); n.add(SOUTH, videoContainer); n.addShowListener(e -> { m.play(); m.setVolume(0); m.setTime(Math.min(m.getDuration() / 2, 1000)); m.pause(); }); return n; } NewPostForm